thread-loader多进程打包+enternals忽略打包+dll动态链接

2023-05-16

当js代码用babel处理兼容性且本身代码就比较多的情况下可以使用thread-loader开启多线程打包

thread-loader本身启动进程就需要耗费时间, 所以当js代码不多时就不要开启, 否则还可能会延长打包时间

{
  // 当js代码用babel处理兼容性且本身代码就比较多的情况下可以使用thread-loader开启多线程打包
  // thread-loader本身启动进程就需要耗费时间, 所以当js代码不多时就不要开启, 否则还可能会延长打包时间
  test: '/\.js$/',
  exclude: /node_modules/,
  use: [
    {
      loader: 'thread-loader',
      options: {
        // 默认是cpu核 - 1, 可以通过这里更改开启几个进程
        works: 2
      }
    },
    {
      loader: 'babel-loader',
      options: {
        presets: [
          [
            '@babel/preset-env',
            {
              useBuiltIns: 'usage',
              corejs: {
                version: 3
              },
              targets: {
                chrome: '60'
              }
            }
          ]
        ]
      }
    }
  ]

}

配置externals来忽略哪些文件不需要打包

忽略打包后需要在index.html中手动引入, 可以引入静态资源或者cdn链接

 externals: {
    jQuery: 'jquery'
  },

除了忽略打包手动引入外还可以使用dll来对第三方库实现一次打包放入一个单独文件夹, 后续打包不参与, 并且自动引入html

需要配置webpack.dll.js来对那些单独打包的文件进行处理, 该文件夹里会生成打包后的文件和一个映射文件

源文件的打包配置里使用这个映射文件确定哪些不需要打包即可

启动指令为webpack —config 文件名, 配置如下

// 该文件运行一次是为了打包那些处理过的第三方库, 例如react或者jquery这种自己不会修改的代码
// 启动指令为webapck --config 该文件名
// 和webpack里打包设置相似但不完全一致, 比如下面的文件入口属性值只能是数组
const { resolve } = require('path')
const webpack = require('webpack')
module.exports = {
  entry: {
    jquery: ['jquery']
  },
  output: {
    // 不能使用contenthash或者其他hash, 不然动态添加到html中引入不知道文件名是什么
    filename: '[name].js',
    // 注意不能也生成到了build打包后的文件夹了, 那里每次打包都要重新生成的
    // 要独立于webpack打包后的文件夹
    path: resolve(__dirname, 'dll'),
    // 打包后向外暴露一个对象, 注意不是文件,不能带后缀, 即export [name]
    library: '[name]_[hash]'
  },
  plugins: [
    // 借助webpack的DllPlugin生成一个映射, 源文件打包后根据这个映射找到提前已经打包好的文件
    // 生成一个manifest.json
    new webpack.DllPlugin({
      // 映射要找的暴露的内容
      name: '[name]_[hash]',
      // 生成的映射文件名, 在源文件打包时使用该映射即可
      path: resolve(__dirname, 'dll/manifest.json')
    })
  ],
  mode: 'production',
}

webapck.config.js

// 该插件的作用是将配置项里的文件引入到html头部
const AddAssetHtmlWebpackPlugin = require('add-asset-html-webpack-plugin')

plugins: [
  // 源文件打包时参照映射表, 表中有的就不打包
  new webpack.DllReferencePlugin({
    manifest: resolve(__dirname, 'dll/manifest.json')
  }),
  // 使用该插件将上面忽略掉不打包的文件自动添加到html头部
  new AddAssetHtmlWebpackPlugin({
    filepath: resolve(__dirname, 'dll/jquery.js')
  })
]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

thread-loader多进程打包+enternals忽略打包+dll动态链接 的相关文章

  • 【无标题】执行java -version查看java版本,显示无权限

    1 来看一下报错截图 2 解决方法 xff0c 给jdk1 8 0 102 bin java赋权 chmod 777 jdk1 8 0 102 bin java 3 验证
  • 配置阿里云yum源

    1 进入到yum源配置文件 cd etc yum repos d rm f 清空所有镜像文件 2 下载aliyun centos8镜像文件 curl o etc yum repos d CentOS Base repo http mirro
  • 配置NTP服务

    设置时区为 Asia Shanghai 设置时区 xff1a timedatectl set timezone Asia Shanghai 查看时区 xff1a timedatectl 有两种情况 一 外网环境 xff0c 向互联网的NTP
  • Could not resolve host: mirrors.aliyun.com; Unknown error

    1 在下载阿里云的centos7镜像时 xff0c 报错如图 2 先ping一下www baidu com 找不到主机 xff0c 这里就说明dns有问题 3 查看一下配置 etc resolv conf 可以看出这个没有dns服务器在 x
  • OpenSSH升级

    OpenSSH是SSH协议的免费开源实现 经常会曝出安全漏洞 xff0c 由于CentOS7自带的OpenSSH版本 xff08 OpenSSH 7 4p1 OpenSSL 1 0 2k fips 26 Jan 2017 xff09 太低
  • linux查看并安装字体

    1 查看系统字体 查看所有已安装的字体 xff1a fc list 查看已安装的中文字体 xff1a fc list lang 61 zh 2 寻找字体方法 1 把windows里面的字体上传到服务器里面 windows字体存放的路径是 x
  • 简单搭建Apache服务器

    1 安装Apache服务 yum y install httpd 2 启动自启Apache服务 systemctl enable now httpd 3 访问 xff08 默认是80端口 xff0c 需要开放防火墙 xff09 4 Apac
  • docker容器设置中文编码

    使用的Dockerfile指定变量的方法 ENV LANG en US utf8
  • mysql开通binlog权限

    GRANT SELECT REPLICATION SLAVE REPLICATION CLIENT ON TO 39 v5 binlog 39 64 39 39 IDENTIFIED BY 39 v5 binlog 39
  • MySQL查看所有用户

    MySQL查看所有用户
  • 【nginx】反向代理是,url包含特殊字符导致400错误

    现象 xff1a 在一个url参数中包含了特殊字符 xff0c 通过nginx请求 xff0c 报400错误 问题分析 xff1a 这个url请求 xff0c 绕开nginx xff0c 可以返回数据 xff0c 判定是nginx出现问题
  • KVM

    KVM安装 查看cpu是否支持虚拟化 cat proc cpuinfo grep E vmx svm 关闭防火墙和selinux 注 xff1a 如果虚拟机ping不通就把防火墙开起来 1 需求内核 rhel6以上 root 64 kvm
  • nginx 防盗链详细步骤

    tailf n0 access log 实时查看网页访问详情 curl e www baidu com 127 0 0 1 e 添加访问头 本机的配置文件内容 本机的网站发布目录 别人的链接网站发布目录
  • nginx 404错误页面配置详解

    nginx 错误页面配置 再主配置文件server中加入一个location模块即可 vim etc nginx conf d default conf server listen 80 server name localhost loca
  • nginx 版本升级和添加模块详解

    版本升级 把1 16 0版本升级为1 18 0 查看本机现在版本为1 16 0 root 64 localhost usr local nginx sbin nginx v nginx version nginx 1 16 0 1 xff0
  • lvs架构

    lvs 4种模式 1 nat 网络地址转换模式 2 dr 直接路由模式 3 tun 隧道模式 4 full nat 双向转换模式 1 xff0c nat xff08 网络地址转换模式架构 xff09 1 nat模式优势是 xff0c 后端可
  • nginx 代理 负载均衡 网站转接的用法

    反向代理 1 xff0c 准备两台nginx真实服务器 a nginx 1 启动网站 内容 xff08 作为网站服务器 xff09 b nginx 2 启动代理程序 一 编辑nginx 2的配置文件 root 64 nginx server
  • LVS_Director + KeepAlived 部署

    1 xff0c 准备四台net机器 其中两台做主 备调度 别外两台做web机器 主 备调度器安装软件 root 64 lvs keepalived master yum y install ipvsadm keepalived 主 root
  • tomcat 详情介绍与部署

    1 xff0c 部署tomcat 安装JDK JDK下载面页 xff1a http www oracle com technetwork java javase downloads index html 下载jdk1 8到服务器 安装jdk
  • Redis 部署及介绍

    1 安装单机版redis root 64 redis master mkdir p data application 创建工作目录 root 64 redis master wget http download redis io relea

随机推荐

  • shenyu中logback替换成log4j2

    一 背景 shenyu框架默认使用的是logback处理日志 xff0c 压测发现写入日志存在瓶颈 基于log4j2优秀的性能 xff0c 使用log4j2替换logback 二 如何替换logback 1 删除logback的依赖项 sp
  • 图片项目部署

    1 xff0c 准备 mysql 主从 43 读写分离 3台 nginx 43 uwsgi 43 python3 6 1台 redis 哨兵 3台 A nginx uwsgi python3 上传代码包 xff0c 调试 B mysql r
  • Git 构建分布式版本控制系统详解

    安装git要4G以上内存 安装和配置必要的依赖关系 root 64 localhost yum install curl policycoreutils openssh server openssh clients 安装邮件程序 root
  • jenkins 详细部署

    部署jenkins需要以下的步骤 环境需要4G内存 1 xff0c 部署git 安装依赖环境 root 64 localhos yum install curl devel expat devel gettext devel openssl
  • RabbitMQ消息队列的部署

    RabbitMQ消息队列的用处 对于一个大型的软件系统来说 xff0c 它会有很多的组件或者说模块或者说子系统 xff08 subsystem or Component or submodule xff09 那么这些模块的如何通信 xff1
  • Docker 基础使用命令

    Docker下载 配置阿里云Docker Yum源 root 64 xingdian yum install y yum utils device mapper persistent data lvm2 git root 64 xingdi
  • docker部署mysql AB复制-详细步骤

    docker部署mysql AB复制 详细步骤 1 安装docker 参考链接 xff1a https blog csdn net qq 50263172 article details 109640641 spm 61 1001 2014
  • mysql 查询特定时间内的操作数量

    查询某几个月中每天的操作量 命令格式 Select DATE FORMAT 字段 39 Y m d 39 AS 34 时间 34 COUNT 1 AS 34 数量 34 FROM 表名 WHERE 字段 gt 39 2021 01 01 0
  • zabbix 邮箱,钉钉报警详解

    1 zabbix部署环境说明 zabbix监控服务器 xff1a mastsc zabbix被监控服务器 xff1a slave 两台机器关闭 34 selinux 34 xff1a setenforce 0 两台机器关闭防火墙 xff1a
  • Centos7离线安装redis

    Centos7离线安装redis 参考文档 xff1a https www cnblogs com yy3b2007com p 10513752 html 1 下载redis安装包 在 opt redis 如没有这个目录需要手动建立 roo
  • zabbix监控使用ping来判断主机是否存活,向邮箱发送邮件报警

    1 安装zabbix监控服务 server 和被监控服务器 slave 安装zabbix参考文档 https blog csdn net qq 50263172 article details 115519613 spm 61 1001 2
  • Feign调用错误no suitable HttpMessageConverter found for response type

    Feign接口 span class token annotation punctuation 64 PostMapping span span class token punctuation span value span class t
  • ubuntu WPS字体缺失 解决方法

    前言 请保证您还有一台windows 文章目录 前言一 在windows复制字体二 复制到ubuntu三 重启WPS总结 一 在windows复制字体 首先在windows下载好WPS xff0c 然后找到字体 xff0c 复制 二 复制到
  • 将IMG等镜像文件转换VMware虚拟机

    先下载好qemu这个转换软件 然后这个软件是用鼠标点不开的 xff0c 先到软件的文件路径然后在路径栏打cmd 或者另一种打开方法 xff0c 在文件所在位置 xff0c 按shift 43 鼠标右键 我这里用第一种 xff0c 接下来两条
  • VNC访问阿里云服务器

    最近阿里云年终特惠 xff0c 新用户服务器只要38一年 xff0c 爱住了呀 xff01 xff01 xff01 果断下单 xff01 买它个一年 xff01 接下来介绍如何通过vnc访问阿里云服务器 一 先要对端口进行开放 在服务器的防
  • ISCSI的部署与安装

    iSCSI xff08 Internet Small Computer System Interface xff0c Internet小型计算机系统接口 xff09 是一种由IBM公司研究开发的IP SAN技术 该技术是将现有SCSI接口与
  • JavaScript 中的相等操作符 ( 详解 [] == []、[] == ![]、{} == !{} )

    一 前言 xff08 比较规则 xff09 JS中的相等操作符由 61 61 表示 xff0c 如果两个操作数相等 xff0c 则返回true 原理 xff1a 相等操作符会先转换操作数 xff08 通常称为强制转型 xff09 xff0c
  • 计算机网络——IP地址与划分子网

    IP地址 1 IP地址表示 对主机和路由器来说 xff0c IP地址用32位二进制代码表示 xff0c 每八位分为一段 xff0c 每段间用空格隔开 xff0c 例如 xff1a 10000000 00001011 00000011 000
  • Snipaste下载安装(使用教程)

    Snipaste下载安装 使用教程 一 简单介绍 Snipaste 是一个免费简单但强大的截图工具 xff0c 也可以让你将截图贴回到屏幕上 xff01 下载并打开 Snipaste xff0c 按下 F1 来开始截图 xff0c 再按 F
  • thread-loader多进程打包+enternals忽略打包+dll动态链接

    当js代码用babel处理兼容性且本身代码就比较多的情况下可以使用thread loader开启多线程打包 thread loader本身启动进程就需要耗费时间 所以当js代码不多时就不要开启 否则还可能会延长打包时间 当js代码用babe