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 相关文章推荐
IE与firefox下Dhtml的一些区别小结
Dec 02 Javascript
javascript 面向对象 function类
May 13 Javascript
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
iframe 异步加载技术及性能分析
Jul 19 Javascript
jQuery.each()用法分享
Jul 31 Javascript
5款JavaScript代码压缩工具推荐
Jul 07 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
Aug 20 Javascript
javascript图片滑动效果实现
Jan 28 Javascript
jquery 判断是否支持Placeholder属性的方法
Feb 07 Javascript
JS表单数据验证的正则表达式(常用)
Feb 18 Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
Apr 22 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会话(session)说明介绍
2016/08/21 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
javascript事件模型介绍
2016/05/31 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
pandas 读取各种格式文件的方法
2018/06/22 Python
python并发和异步编程实例
2018/11/15 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
小学生元旦广播稿
2014/02/21 职场文书
经典商业广告词
2014/03/13 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
档案管理员岗位职责
2015/02/12 职场文书
学生检讨书怎么写
2015/05/07 职场文书
一般纳税人申请报告
2015/05/18 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
js Proxy的原理详解
2021/05/25 Javascript