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 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
简略的前端架构心得&&基于editor为例子的编码小技巧
Nov 25 Javascript
JavaScript 正则表达式中global模式的特性
Feb 25 Javascript
JS中使用变量保存arguments对象的方法
Jun 03 Javascript
浅谈关于angularJs中使用$.ajax的注意点
Aug 12 Javascript
webpack配置之后端渲染详解
Oct 26 Javascript
Vue2.0生命周期的理解
Aug 20 Javascript
简述vue路由打开一个新的窗口的方法
Nov 29 Javascript
ES6知识点整理之模块化的应用详解
Apr 15 Javascript
自定义Vue组件打包、发布到npm及使用教程
May 22 Javascript
通过Kettle自定义jar包供javascript使用
Jan 29 Javascript
Vue select 绑定动态变量的实例讲解
Oct 22 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
php escape URL编码
2008/12/10 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
python版本的读写锁操作方法
2016/04/25 Python
深入理解Python中的内置常量
2017/05/20 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
python实现感知器算法(批处理)
2019/01/18 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
移动通信专业自荐信范文
2013/11/12 职场文书
运动会获奖感言
2014/02/11 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
计算机系本科生求职信
2014/05/31 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
社区党员干部承诺书
2015/05/04 职场文书
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP