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系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
Jan 15 Javascript
jQuery Ajax提交表单查询获得数据实例代码
Sep 19 Javascript
JavaScript实现简单图片滚动附源码下载
Jun 17 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
Sep 22 Javascript
javascript中Function类型详解
Apr 28 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
浅谈html转义及防止javascript注入攻击的方法
Dec 04 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
说说AngularJS中的$parse和$eval的用法
Sep 14 Javascript
mui框架 页面无法滚动的解决方法(推荐)
Jan 25 Javascript
微信小程序之批量上传并压缩图片的实例代码
Jul 05 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
Sep 26 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注入实例
2006/10/09 PHP
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
PHP整合PayPal支付
2015/06/11 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
python对url格式解析的方法
2015/05/13 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
Django框架实现的分页demo示例
2019/05/25 Python
OpenCV 边缘检测
2019/07/10 Python
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
护理专业推荐信
2013/11/07 职场文书
关于元旦的广播稿
2014/02/16 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
写字楼租赁意向书
2014/07/30 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书