webpack4.x版本splitChunksPlugin的配置项详解与实际应用场景
个人维护的 webpack@latest 多页脚手架2.X已经发布,喜欢请给星,详见: https://github.com/pomelott/webpack-multi-page-cli
在工程化地使用webpack时,公共代码抽离是不可或缺的,4.x版本之后,commonsChunkPlugin已经被去掉,splitChunksPlugins登上舞台,并且优化了很多配置选项,具体可见官方文档,这里不做过多说明。
在使用splitChunksPlugins之前,首先要知道splitChunksPlugins是webpack主模块中的一个细分模块,无需npm引入。功能上,splitChunksPlugins只能用于如何抽离公用的代码,也就是抽离公用代码的规则,要记住,除了这个功能之外,splitChunksPlugins再无其他功能(明白这点很重要,至少我自己在这点上被坑到过)。
首先先说每个配置项的作用:
*在此说明下, 下文中说到的块即chunks,也就是js文件
1. minSize
分离前的最小块文件大小,单位为字节
2. minChunks
分离前,该块被引入的次数
3.maxInitialRequests
一个入口文件可以并行加载的最大文件数量
4.maxAsyncRequests
内层文件(第二层)按需加载时最大的并行加载数量
5.name
用以控制分离后代码块的命名,当存在匹配的缓存组(后面会说到)时,命名使用缓存组中的name值,若不存在则为 [来源]~[入口的key值].js 的格式
6.automaticNameDelimiter
修改上文中的 “~” , 若改为: “-” 则分离后的js默认命名规则为 [来源]-[入口的key值].js
7.test
用于规定缓存组匹配的文件位置,test: /node_modules/ 即为匹配相应文件夹下的模块
8.cacheGroups
名字叫做缓存组,其实就是存放分离代码块的规则的对象,叫做cacheGroup的原因是webpack会将规则放置在cache流中,为对应的块文件匹配对应的流,从而生成分离后的块。
cacheGroup中priority 为分离规则的优先级,优先级越高,则优先匹配。
9.chunks
匹配的块的类型:initial(初始块),async(按需加载的异步块),all(所有块)
10.priority
这个是最重要的,即便是所有配置项都写好了,优先级不够,或者优先级设置不正确,也得不到相应的结果。当需要优先匹配缓存组的规则时,priority需要设置为正数,当需要优先匹配默认设置时,缓存组需设置为负数,0为两者的分界点。
splitChunks的常用配置:
optimization: {
splitChunks: {
cacheGroups:{
// 比如你要单独把jq之类的官方库文件打包到一起,就可以使用这个缓存组,如想具体到库文件(jq)为例,就可把test写到具体目录下
vendor: {
test: /node_modules/,
name: "vendor",
priority: 10,
enforce: true
},
// 这里定义的是在分离前被引用过两次的文件,将其一同打包到common.js中,最小为30K
common: {
name: "common",
minChunks: 2,
minSize: 30000
}
},
chunks:"all",
minSize: 40000
}
}
4.x属于比较新的版本,官方文档有些细节说的不是很清楚,只能自己摸索。如有疑问,欢迎指教。
webpack4.x版本splitChunksPlugin的配置项详解与实际应用场景的更多相关文章
- Storm配置项详解【转】
Storm配置项详解 ——阿里数据平台技术博客:storm配置项详解 什么是Storm? Storm是twitter开源的一套实时数据处理框架,基于该框架你可以通过简单的编程来实现对数据流的实时处理变 ...
- 转:Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。
原文来自于:http://www.ituring.com.cn/article/128439 Windows下的PHP开发环境搭建——PHP线程安全与非线程安全.Apache版本选择,及详解五种运行模 ...
- SpringCloud Eureka参数配置项详解
SpringCloud Eureka参数配置项详解(转) Eureka涉及到的参数配置项数量众多,它的很多功能都是通过参数配置来实现的,了解这些参数的含义有助于我们更好的应用Eureka的各种功能,下 ...
- Python - poetry(3)配置项详解
config 命令 poetry 通过 config 命令进行配置 也可以直接在 config.toml 文件中进行配置,该文件将在首次运行该命令时自动创建 文件目录 macOS:~/Library/ ...
- 【转】web.xml配置项详解
史上最全web.xml配置文件元素详解 一.web.xml配置文件常用元素及其意义预览 1 <web-app> 2 3 <!--定义了WEB应用的名字--> 4 <d ...
- SpringBoot application.properties 配置项详解
参考: http://blog.csdn.net/lpfsuperman/article/details/78287265### # spring boot application.propertie ...
- cloudermanger安装时需要安装或彻底正确卸载再安装orcal-java7-installer、oracle-java7-set-default(ubuntu14.04版本)(图文详解)
不多说,直接上干货! 安装orcal-java7-installer和oracle-java7-set-default 安装JDK1.7 (所有节点)CDH要求至少是Oracle JDK7,Ubunt ...
- webpack4+koa2+vue 实现服务器端渲染(详解)
_ 阅读目录 一:什么是服务器端渲染?什么是客户端渲染?他们的优缺点? 二:了解 vue-server-renderer 的作用及基本语法. 三:与服务器集成 四:服务器渲染搭建 4.1 为每个请求创 ...
- 机器学习 | 详解GBDT在分类场景中的应用原理与公式推导
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第31篇文章,我们一起继续来聊聊GBDT模型. 在上一篇文章当中,我们学习了GBDT这个模型在回归问题当中的原理.GBD ...
随机推荐
- Java-HttpServlet
/** * * Provides an abstract class to be subclassed to create * an HTTP servlet suitable for a Web s ...
- Media Player Classic - HC 源代码分析 7:详细信息选项卡(CPPageFileInfoDetails)
===================================================== Media Player Classic - HC 源代码分析系列文章列表: Media P ...
- 解决javac和java命令在Mac OSX终端里的乱码问题
转自:https://www.surfchen.org/archives/710 java和javac在简体中文的Mac OSX的终端(Terminal.app)环境下,默认是以GBK编码的中文输出各 ...
- 如何调整DOS窗口的宽高
运行->cmd->dos窗口上沿点右键->默认值所选字体字体: 新宋体大小: 13窗口大小宽度: 100高度: 40屏幕缓冲区大小宽度: 100高度: 300 在这里还可以设置依他常 ...
- Linux基础正则表达式字符汇整(characters)
RE 字符 意义与范例 ^word 意义:待搜寻的字串(word)在行首! 范例:搜寻行首为 # 开始的那一行,并列出行号 grep -n '^#' regular_express.txt word$ ...
- OpenCV问题集锦,图片显示不出来,WaitKey(0),imread()不能读图片,未经处理的异常,等问题集合
昨天根据uc伯克利的人工图像分割文件.seg,显示图像的时候调用了OpenCV的库函数,图片都能用imwrite写好,但是imshow死活显示不出来. 今天早上发现原来是imshow()后面应该加上: ...
- C++语言之静态变量的运用
#include <iostream> using namespace std ; class Banana { public: static int id ; Banana(void) ...
- StickyListHeaders的使用
我们知道在ios中字母的导航有悬停的效果,在android中,git上有大神实现了这种悬停的功能,我们只要将普通的Listview改为StickyListHeadersListView然后设置adap ...
- 在GitHub上创建代码仓库
目前在GitHub上管理托管带代码的人越来越多了,今天也尝试了一次,顺便记下来,备用. 首先是在GitHub上创建一个代码仓库,创建完之后,GitHub上会有提示,这时进入项目目录执行下面的命令,顺便 ...
- SharePoint 开发TimerJob 介绍
项目需要写TimerJob,以前也大概知道原理,不过,开发过程中,还是遇到一些问题,网上看了好多博客,也有写的灰常好的,不过,自己还是想再写一下,也算是给自己一个总结,也算给大家多一个参考吧. Tim ...