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 div高度自适应
Apr 28 Javascript
为jQuery.Treeview添加右键菜单的实现代码
Oct 22 Javascript
Javascript中的Array数组对象详谈
Mar 03 Javascript
jquery查找父元素、子元素(个人经验总结)
Apr 09 Javascript
JS简单编号生成器实现方法(附demo源码下载)
Apr 05 Javascript
vue.js指令v-for使用及索引获取
Nov 03 Javascript
原生js实现放大镜
Feb 20 Javascript
ES6实现的遍历目录函数示例
Apr 07 Javascript
Mac系统下Webstorm快捷键整理大全
May 28 Javascript
js实现点击按钮复制文本功能
Jul 20 Javascript
vue通信方式EventBus的实现代码详解
Jun 10 Javascript
js实现秒表计时器
Dec 16 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
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
php多进程应用场景实例详解
2019/07/22 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
索趣科技的答案
2007/02/07 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
python处理二进制数据的方法
2015/06/03 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
python IDLE添加行号显示教程
2020/04/25 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
AJAX都有哪些有点和缺点
2012/11/03 面试题
网游商务专员求职信
2013/10/15 职场文书
学习雷锋倡议书
2014/04/15 职场文书
读书活动总结范文
2014/04/26 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
2016年元旦主持词
2015/07/06 职场文书
五年级作文之成长
2019/09/16 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP