代码分割本身和 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 配置参数详解的更多相关文章

  1. Tomcat server.xml中Connector配置参数详解

    Tomcat中Connector常用配置 Tomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试. <Connector port="8080&q ...

  2. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  3. reids配置参数详解

    转自:http://www.jb51.net/article/60627.htm reids配置参数详解 #daemonize no  默认情况下, redis 不是在后台运行的,如果需要在后台运行, ...

  4. nginx配置参数详解

    配置参数详解 user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍 ...

  5. Redis配置参数详解

    Redis配置参数详解 /********************************* GENERAL *********************************/ // 是否作为守护进 ...

  6. 【通信】JDK中的URLConnection参数详解

    JDK中的URLConnection参数详解 来自:http://www.blogjava.net/supercrsky/articles/247449.html 针对JDK中的URLConnecti ...

  7. MHA配置参数详解 【转】

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  8. zookeeper的配置参数详解(zoo.cfg)

    配置参数详解(主要是%ZOOKEEPER_HOME%/conf/zoo.cfg文件) 参数名 说明 clientPort 客户端连接server的端口,即对外服务端口,一般设置为2181吧. data ...

  9. HAproxy 配置参数详解

    HAproxy 配置参数详解 /etc/haproxy/haproxy.cfg # 配置文件 ----------------------------------------------------- ...

随机推荐

  1. Nginx笔记总结十一:Nginx重写规则指南

    依赖PCRE库,需要安装pcre,最多循环10次,超过后返回500错误, 1.       rewrite模块指令 break:完成当前设置的重写规则,停止执行其他的重写规则 if:  if () { ...

  2. 中心极限定理|z分布|t分布|卡方分布

    生物统计学 抽样分布:n个样本会得到n个统计量,将这n个统计量作为总体,该总体的分布即是抽样分布 根据辛钦大数定律,从一个非正态分布的总体中抽取的含量主n的样本,当n充分大时,样本平均数渐近服从正态分 ...

  3. 流量全球第4的Reddit到底是一个怎样的网站?

    对于喜欢NBA的我来说,Reddit是经常接触的一个网站.或者说,很多关于NBA的最新消息都是从Reddit上传出来的.值得一提的是,NBA版块在Reddit所有版块中用户活跃程度排名第三,也是体育版 ...

  4. [转]<版本二>写代码的小女孩

    天冷极了,下着雪,又快黑了.这是一年的最后一天——大年夜.在这又冷又黑的晚上,一个乖巧的小女孩在机房里调试程序.她从家里出来的时候还穿着一件外套,但是有什么用呢?那是一双很大的外套——那么大,不知是哪 ...

  5. 如何卸载烦人的2007组件,windows提供的解决方案

    如何卸载烦人的2007组件:很恶心人各种软件已经手动删除卸载都无法用,不是cd/dvd找不到就是什么msi文件找不到:对于这种恶心的问题,windows提供了如下解决方案:我使用fixit轻松卸载,很 ...

  6. Linux 信号介绍

    是内容受限时的一种异步通信机制 首先是用来通信的 是异步的 本质上是 int 型的数字编号,早期Unix系统只定义了32种信号,Ret hat7.2支持64种信号,编号0-63(SIGRTMIN=31 ...

  7. 后渗透阶段之基于MSF的路由转发

    目录 反弹MSF类型的Shell 添加内网路由 MSF的跳板功能是MSF框架中自带的一个路由转发功能,其实现过程就是MSF框架在已经获取的Meterpreter Shell的基础上添加一条去往“内网” ...

  8. MySQL的字符集和乱码问题

    1.字符集知识 #概述 .字符集是一套文字符号及其编码.比较规则的集合,第一个计算机字符串ASC2 .mysql数据库字符集包括字符集(character)和 校对规则,其中字符集使用来定义mysql ...

  9. 7-45 jmu-python-涨工资 (10 分)

    输入一组工资数据,写入列表.对于小于5000的工资,涨1.5倍.并输出涨后的工资数据. 输入格式: 数据之间空格隔开 输出格式: 涨工资后的数据,空格隔开.尾部 不带空格. 输入样例: 3000 40 ...

  10. 前端每日实战:85# 视频演示如何用纯 CSS 创作一个小球反弹的动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OwWROO 可交互视频 此视频是可 ...