webpack4 optimization使用总结


Posted in Javascript onNovember 10, 2019

optimization总结

minimize

默认为true,效果就是压缩js代码。

minimizer

可以自定义UglifyJsPlugin和一些配置,默认的压缩为uglifyjs-webpack-plugin

//比如在构建的时候,希望新增css的压缩
minimizer:
 mode === "development"
  ? []
  : [
    new UglifyJsPlugin({
     cache: true,
     parallel: true,
     sourceMap: mode === "development"
    }),
    new OptimizeCSSAssetsPlugin()
   ]

runtimeChunk

默认为false,runtime相关的代码(各个模块之间的引用和加载的逻辑)内嵌入每个entry

true:对于每个entry会生成runtime~${entrypoint.name}的文件。

webpack4 optimization使用总结

'single': 会生成一个唯一单独的runtime.js文件,就是manifest

webpack4 optimization使用总结

multiple:和true一致。name:{}:自定义runtime文件的name

webpack4 optimization使用总结

webpack4 optimization使用总结

noEmitOnErrors

默认为true,编译错误的时候是否不生成资源。

namedModules,namedChunks

development默认都为true,production默认为false,选择是否给modulechunk更有意义的名称。

nameModules:true这里会显示路径

webpack4 optimization使用总结

nameModules:false直接采用索引自增

webpack4 optimization使用总结

namedChunks:true

webpack4 optimization使用总结

namedChunks:false采用索引

webpack4 optimization使用总结

moduleIds

一般不建议配置namedModules,namedChunks
针对module的配置,这里会取hashed

webpack4 optimization使用总结

针对chunk的配置,特别是异步代码一般会采用@vue-cli3推荐的插件

webpack4 optimization使用总结

removeAvailableModules,removeEmptyChunks,mergeDuplicateChunks,flagIncludedChunks

这4个参数构建默认都是true,主要是用于构建优化,不需要改,基本就是字面意思。

splitChunks

主要就是根据不同的策略来分割打包出来的bundle
默认配置:

webpack4 optimization使用总结

1.chunks

webpack4 optimization使用总结

async(默认)

splitChunks:{
  chunks:'async'//分割异步打包的代码,
}

打包出b和vue两个chunk。

webpack4 optimization使用总结

all:

splitChunks:{
  chunks:'all',//同时分割同步和异步代码,推荐。
  cacheGroup:{//默认的规则不会打包,需要单独定义
   a: {
    test: /a\.js/,
    chunks: "all",
    name: "a",
    enforce: true
   }
  }
}

webpack4 optimization使用总结

initial

splitChunks:{
  chunks:'initial'//也会同时打包同步和异步,但是异步内部的引入不再考虑,直接打包在一起,会将vue和b的内容直接打包成chunk,
  cacheGroup:{//默认的规则不会打包,需要单独定义
   a: {
    test: /a\.js/,
    chunks: "all",
    name: "a",
    enforce: true
   }
  }
}

webpack4 optimization使用总结

2.name
分割的js名称,默认为true,返回
${cacheGroup的key} ${automaticNameDelimiter} ${moduleName},可以自定义。

3.minChunks
最小公用模块次数,默认为1

4.minSize,maxSize,maxAsyncRequests(按需加载时候最大的并行请求数),maxInitialRequests(一个入口最大的并行请求数)
都为字面意思,一般不建议改。

5.cacheGroups
缓存策略,默认设置了分割node_modules和公用模块。内部的参数可以和覆盖外部的参数。
test 正则匹配文件
priority 优先级
reuseExistingChunk是否复用存在的chunk

cacheGroup:{
   a: {
    test: /a\.js/,//匹配规则
    minChunks:2,//重写公用chunks的次数
    chunks: "all",
    name: "a",//重写文件名称
    enforce: true //强制生成
   }
  }

6.automaticNameDelimiter
文件名称分隔符号~

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

Javascript 相关文章推荐
jQuery 位置插件
Dec 25 Javascript
JS 文件传参及处理技巧分析
May 13 Javascript
嵌入式iframe子页面与父页面js通信的方法
Jan 20 Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 Javascript
JS实现灵巧的下拉导航效果代码
Aug 25 Javascript
JavaScript模拟鼠标右键菜单效果
Dec 08 Javascript
jQuery Ajax 加载数据时异步显示加载动画
Aug 01 Javascript
很实用的js选项卡切换效果
Aug 12 Javascript
解析javascript图片懒加载与预加载的分析总结
Oct 27 Javascript
js移动焦点到最后位置的简单方法
Nov 25 Javascript
gulp构建小程序的方法步骤
May 31 Javascript
JS表格的动态操作完整示例
Jan 13 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 #Javascript
node后端服务保活的实现
Nov 10 #Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
Nov 10 #Javascript
vue父子组件的通信方法(实例详解)
Nov 10 #Javascript
分享Angular http interceptors 拦截器使用(推荐)
Nov 10 #Javascript
vue-父子组件和ref实例详解
Nov 10 #Javascript
vue $set 给数据赋值的实例
Nov 09 #Javascript
You might like
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
python并发编程之线程实例解析
2017/12/27 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
python numpy格式化打印的实例
2018/05/14 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
Python字符串对象实现原理详解
2019/07/01 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
HTML5标签小集
2011/08/02 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
法学专业自我鉴定
2014/02/05 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
2014年幼师工作总结
2014/11/22 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
国家助学金受助感言
2015/08/01 职场文书
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏