webpack 从指定入口文件中提取公共文件的方法


Posted in Javascript onNovember 13, 2018

在不明白CommonsChunkPlugin的使用情况下,直接上手webpack4的splitChunks,实在是难上加难。为了能更好的理解splitChunks的使用,必须出个题目,练练手,才能从中有所收获(下面的题目不考虑实际应用场景):

从指定入口文件中提取公共文件

CommonsChunkPlugin的实现:
entry: {
    index:'./src/index.js',
    index1:'./src/index1.js',
    index2:'./src/index2.js'
},
plugins: [
  new CommonsChunkPlugin({
    name:"common1",
    chunks:['index','index1','index2']
  })
]

其中index和index1以及index2都是打包的入口文件。

splitChunks的实现:

optimization: {
    splitChunks: {
      chunks:"all",
      minSize: 0,
      cacheGroups: {
        common: {
          minChunks: 3,
          priority: -1,
          name:'common',
          chunks (chunk) {
            // exclude `my-excluded-chunk`
            return ['index','index1','index2'].includes(chunk.name);
          }
        }
      }
    }
  }

在cacheGroups下面我们定义了一个common。通过chunks函数,指定三个入口文件为:'index','index1','index2',同时我们还要设置minChunks为3,表示指定三个入口文件中提取出的公共文件,最少要被三个不同的入口文件引用。所以就是从三个入口文件中提取公共的文件。

从两个公共文件中,再提取公共部分

先说一下,这是什么意思:

  • 有6个公共文件a,b,c,d,e,f。
  • 从a,b,c中提取其公共的部分x,从d,e,f中也提取公共部分y。
  • 从x,y中再提取公共部分z。

下面给出webpack3 和webpack4下的处理

CommonsChunkPlugin的实现:

new CommonsChunkPlugin({
  name:"common1",
  chunks:['index','index1','index2']
}),
new CommonsChunkPlugin({
  name:"common2",
  chunks:['app','app1','app2']
}),
new CommonsChunkPlugin({
  name:"common3",
  chunks:['common1','common2']
})

很清楚,先从'index','index1','index2'中提取公共文件‘common1',再从'app','app1','app2'中提取公共文件‘common2'。最后从‘common1'和‘common2'中再提取出公共文件common3。

splitChunks的实现:

optimization: {
    runtimeChunk: 'single',
    splitChunks: {
      chunks:"all",
      minSize: 0,
      cacheGroups: {
        common3: {
         minChunks: 6,
         priority: 1,
         reuseExistingChunk: true
        },
        common2: {
          minChunks: 3,
          priority: -2,
          name:'common2',
          chunks (chunk) {
            // exclude `my-excluded-chunk`
            return ['app','app1','app2'].includes(chunk.name);
          }

        },
        common1: {
          priority: -1,
          name: 'common1',
          minChunks: 3,
          enforce: true,
          chunks (chunk) {
            return ['index','index1','index2'].includes(chunk.name);
          }
        }
      }
    }
  }

我没有从文档中找到:提取公共文件之后再处理的方法。所以我用了另外一种方式:

  • 先从6个文件中提取出公共的文件,即common3(common1和common2的公共文件)。
  • 从'index','index1','index2'中提取common1
  • 从'app','app1','app2'中提取common2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
云网广告中的代码,提示出错,大家找找
Nov 21 Javascript
JavaScript 对象模型 执行模型
Oct 15 Javascript
网易JS面试题与Javascript词法作用域说明
Nov 09 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
Oct 12 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
jQuery设置和移除文本框默认值的方法
Mar 09 Javascript
Javascript BOM学习小结(六)
Nov 26 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
Jun 21 Javascript
AngularJS入门教程之更多模板详解
Aug 19 Javascript
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
vue服务端渲染页面缓存和组件缓存的实例详解
Sep 18 Javascript
vue $router和$route的区别详解
Dec 02 Vue.js
详解Vue实战指南之依赖注入(provide/inject)
Nov 13 #Javascript
node.js爬取中关村的在线电瓶车信息
Nov 13 #Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
Nov 13 #Javascript
详解Vue组件插槽的使用以及调用组件内的方法
Nov 13 #Javascript
Vue实现一个无限加载列表功能
Nov 13 #Javascript
Vue实现移动端页面切换效果【推荐】
Nov 13 #Javascript
vue中slot(插槽)的介绍与使用
Nov 12 #Javascript
You might like
PHP 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
亲密接触PHP之PHP语法学习笔记1
2006/12/17 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
Angular路由简单学习
2016/12/26 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
python动态监控日志内容的示例
2014/02/16 Python
Python字符串中查找子串小技巧
2015/04/10 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
Python文件操作函数用法实例详解
2019/12/24 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
2020/02/03 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
Docker部署Mysql8的实现步骤
2022/07/07 Servers