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 相关文章推荐
一个符号插入器 中用到的js代码
Sep 04 Javascript
js获取url中"?"后面的字串方法
May 15 Javascript
JavaScript实现获取dom中class的方法
Feb 09 Javascript
禁止按回车键提交表单的方法
Jun 11 Javascript
js封装tab标签页实例分享
Dec 19 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
Apr 04 Javascript
vue router2.0二级路由的简单使用
Jul 05 Javascript
vue使用技巧及vue项目中遇到的问题
Jun 04 Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
详解微信小程序之一键复制到剪切板
Apr 24 Javascript
vue调用本地摄像头实现拍照功能
Aug 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
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
php之readdir函数用法实例
2014/11/13 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
python如何获取服务器硬件信息
2017/05/11 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python生成requirements.txt的两种方法
2019/09/18 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
django实现模型字段动态choice的操作
2020/04/01 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
期末考试动员演讲稿
2014/01/10 职场文书
干部下基层实施方案
2014/03/14 职场文书
教师个人自我评价范文
2014/04/13 职场文书
大学生新学期计划书
2014/04/28 职场文书
英语导游欢迎词
2015/09/30 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
Windows server 2012搭建FTP服务器
2022/04/29 Servers