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 相关文章推荐
javascript特殊用法示例介绍
Nov 29 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
js实现获取焦点后光标在字符串后
Sep 17 Javascript
jQuery中:empty选择器用法实例
Dec 30 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
May 05 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
Nov 02 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
Express + Session 实现登录验证功能
Sep 08 Javascript
初探js和简单隐藏效果的实例
Nov 23 Javascript
javascript Function函数理解与实战
Dec 01 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
Sep 07 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
Aug 07 Javascript
详解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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
php url路由入门实例
2014/04/23 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
vue实现一个炫酷的日历组件
2018/10/08 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
用vue写一个日历
2020/11/02 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
使用Python对MySQL数据操作
2017/04/06 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
Python requests接口测试实现代码
2020/09/08 Python
python利用opencv实现颜色检测
2021/02/23 Python
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
计算机应用专业毕业生求职信
2013/10/24 职场文书
工作表扬信的范文
2014/01/10 职场文书
年度考核自我评价
2014/01/25 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
会计人员演讲稿
2014/09/11 职场文书
晚会开幕词
2015/01/28 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书