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 相关文章推荐
js报错 Object doesn't support this property or method的原因分析
Mar 31 Javascript
JS获取浏览器语言动态加载JS文件示例代码
Oct 31 Javascript
jQuery制作拼图小游戏
Jan 12 Javascript
jQuery常用数据处理方法小结
Feb 20 Javascript
使用RequireJS优化JavaScript引用代码的方法
Jul 01 Javascript
javascript事件模型介绍
May 31 Javascript
5种JavaScript脚本加载的方式
Jan 16 Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 Javascript
利用Node.js批量抓取高清妹子图片实例教程
Aug 02 Javascript
element-ui 表格数据时间格式化的方法
Aug 24 Javascript
微信小程序实现折线图的示例代码
Jun 07 Javascript
在layui中layer弹出层点击事件无效的解决方法
Sep 05 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
模拟flock实现文件锁定
2007/02/14 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
PHP时间类完整代码实例
2021/02/26 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
简单介绍Python中的struct模块
2015/04/28 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
python实现词法分析器
2019/01/31 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
python 实现aes256加密
2020/11/27 Python
Python实现随机爬山算法
2021/01/29 Python
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
幼儿运动会邀请函
2014/01/17 职场文书
跳高加油稿
2015/07/21 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书