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 相关文章推荐
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
Mar 23 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
Jan 06 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
Apr 03 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
Oct 21 Javascript
jQuery实现三级菜单的代码
May 09 Javascript
js本地图片预览实现代码
Oct 09 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
Jan 20 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 Javascript
Vue中inheritAttrs的使用实例详解
Dec 31 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
php猜单词游戏
2015/09/29 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
Python实现从URL地址提取文件名的方法
2015/05/15 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
查询优化的一般准则有哪些
2015/03/08 面试题
学生喝酒检讨书
2014/02/06 职场文书
支部组织生活会方案
2014/06/10 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
大学生助学金感谢信
2015/01/21 职场文书
昆虫记读书笔记
2015/06/26 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python