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 相关文章推荐
Javascript 网页黑白效果实现代码(兼容IE/FF等)
Apr 23 Javascript
利用location.hash实现跨域iframe自适应
May 04 Javascript
js焦点文字滚动效果代码分享
Aug 25 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
Nov 12 Javascript
微信小程序 页面滑动事件的实例详解
Oct 12 Javascript
javaScript中"=="和"==="的区别详解
Mar 16 Javascript
JS构造一个html文本内容成文件流形式发送到后台
Jul 31 Javascript
js通过循环多张图片实现动画效果
Dec 19 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 jQuery
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 高性能书写
2010/12/11 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
javascript 写类方式之七
2009/07/05 Javascript
js DOM模型操作
2009/12/28 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
node网页分段渲染详解
2016/09/05 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
小程序转发探索示例
2019/02/19 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
深入Python解释器理解Python中的字节码
2015/04/01 Python
基python实现多线程网页爬虫
2015/09/06 Python
总结python实现父类调用两种方法的不同
2017/01/15 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
python 以16进制打印输出的方法
2018/07/09 Python
Python字符串的修改方法实例
2019/12/19 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
最新大学职业规划书范文
2013/12/30 职场文书
小学生操行评语
2014/04/22 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
军训通讯稿范文
2015/07/18 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python
Fluentd搭建日志收集服务
2022/09/23 Servers