Webpack中SplitChunksPlugin 配置参数详解


Posted in Javascript onMarch 24, 2020

代码分割本身和 webpack 没有什么关系,但是由于使用 webpack 可以非常轻松地实现代码分割,所以提到代码分割首先就会想到使用 webopack 实现。

在 webpack 中是使用 SplitChunksPlugin 来实现的,由于 SplitChunksPlugin 配置参数众多,接下来就来梳理一下这些配置参数。

官网上的默认配置参数如下:

module.exports = {
 //...
 optimization: {
  splitChunks: {
   chunks: 'async', // 代码分割时对异步代码生效,all:所有代码有效,inital:同步代码有效
   minSize: 30000, // 代码分割最小的模块大小,引入的模块大于 30000B 才做代码分割
   maxSize: 0, // 代码分割最大的模块大小,大于这个值要进行代码分割,一般使用默认值
   minChunks: 1, // 引入的次数大于等于1时才进行代码分割
   maxAsyncRequests: 6, // 最大的异步请求数量,也就是同时加载的模块最大模块数量
   maxInitialRequests: 4, // 入口文件做代码分割最多分成 4 个 js 文件
   automaticNameDelimiter: '~', // 文件生成时的连接符
   automaticNameMaxLength: 30, // 自动生成的文件名的最大长度
   cacheGroups: {
    vendors: {
     test: /[\\/]node_modules[\\/]/, // 位于node_modules中的模块做代码分割
     priority: -10 // 根据优先级决定打包到哪个组里,例如一个 node_modules 中的模块进行代码
    }, // 分割,,既满足 vendors,又满足 default,那么根据优先级会打包到 vendors 组中。
    default: { // 没有 test 表明所有的模块都能进入 default 组,但是注意它的优先级较低。
     priority: -20, // 根据优先级决定打包到哪个组里,打包到优先级高的组里。
     reuseExistingChunk: true // //如果一个模块已经被打包过了,那么再打包时就忽略这个上模块
    }
   }
  }
 }
};

补充几点:

在分组中可以人为地规定打包后文件的名字,在 vendor 分组中添加 filename = "vendor.js" 之后,在 vendor 分组中打包后文件的名字都是 vendor.js 。

reuseExistingChunk  实例讲解:

// a.js
import b from './b';

// index.js
import a from './a';
import b from './b';

在上述代码中,index.js 在执行 import a from './a' 时引入 a 模块,由于 a 模块中使用了 b 模块,所以同时也引入了 b 模块。再执行 import b from './b' 时,由于 b 模块已经被打包过了,所以就会忽略掉这个 b 模块,这就是 reuseExistingChunk: true 的作用。

如果想让两个模块打包到一个文件里应该如何实现?

cacheGroup 就可以实现这个需求,假设有两个模块 module1 和 module2,且都满足 vendor 这个组,那么在进行代码分割时,会先将 module1 放到 CacheGroup 中,然后再将 module2 放到 cacheGroup 中,最后再将两者一起放到 vender 组里生成 vender.js 文件。

到此这篇关于Webpack中SplitChunksPlugin 配置参数详解的文章就介绍到这了,更多相关Webpack SplitChunksPlugin 配置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js innerHTML 的一些问题的解决方法
Jun 22 Javascript
js异或加解密效果代码
Jun 25 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
May 10 Javascript
Vue.js双向绑定操作技巧(初级入门)
Dec 27 Javascript
angularJS模态框$modal实例代码
May 27 Javascript
javascript完美实现给定日期返回上月日期的方法
Jun 15 Javascript
JavaScript禁用右键单击优缺点分析
Jan 20 Javascript
vue-for循环嵌套操作示例
Jan 28 Javascript
Centos7 安装Node.js10以上版本的方法步骤
Oct 15 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
Mar 02 Javascript
微信小程序中的上拉、下拉菜单功能
Mar 13 Javascript
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
JS实现点星星消除小游戏
Mar 24 #Javascript
js实现小星星游戏
Mar 23 #Javascript
JS Array.from()将伪数组转换成数组的方法示例
Mar 23 #Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
Mar 23 #Javascript
小程序使用分包的示例代码
Mar 23 #Javascript
用JS实现选项卡
Mar 23 #Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 #Javascript
You might like
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
php adodb操作mysql数据库
2009/03/19 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
PHP答题类应用接口实例
2015/02/09 PHP
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
什么是Python变量作用域
2020/06/03 Python
用python读取xlsx文件
2020/12/17 Python
HTTP状态码详解
2021/03/18 杂记
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
高中军训感言1000字
2014/03/01 职场文书
镇创先争优活动总结
2014/08/28 职场文书
运动会广播稿300字
2015/08/19 职场文书
javaScript Array api梳理
2021/03/31 Javascript