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的blockui插件显示弹出层
Apr 14 Javascript
jquery实现div拖拽宽度示例代码
Jul 31 Javascript
原生JS可拖动弹窗效果实例代码
Nov 09 Javascript
JS实现倒计时和文字滚动的效果实例
Oct 29 Javascript
js中函数声明与函数表达式
Jun 03 Javascript
JS实现左右无缝轮播图代码
May 01 Javascript
基于bootstrap的选择框插件icheck
Dec 23 Javascript
npm 更改默认全局路径以及国内镜像的方法
May 16 Javascript
vue+canvas实现移动端手写签名
May 21 Javascript
jQuery弹框插件使用方法详解
May 26 jQuery
Postman无法正常返回结果问题解决
Aug 28 Javascript
详解vue 中 scoped 样式作用域的规则
Sep 14 Javascript
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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
Javascript调用C#代码
2011/01/17 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
简单介绍Python中的struct模块
2015/04/28 Python
python3抓取中文网页的方法
2015/07/28 Python
Python内建数据结构详解
2016/02/03 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
Python urllib.request对象案例解析
2020/05/11 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
应聘美工求职信
2013/11/07 职场文书
致400米运动员广播稿
2014/02/07 职场文书
升职演讲稿范文
2014/05/23 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
给领导的感谢信范文
2015/01/23 职场文书
2016高考寄语集锦
2015/12/04 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
python 实现的截屏工具
2021/05/08 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技