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学习4 浏览器的事件模型
Feb 07 Javascript
juqery 学习之三 选择器 简单 内容
Nov 25 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
Dec 16 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
浅谈setTimeout 与 setInterval
Jun 23 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 Javascript
AngularJS实践之使用NgModelController进行数据绑定
Oct 08 Javascript
JavaScript之Map和Set_动力节点Java学院整理
Jun 29 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
layer弹出层倒计时关闭的实现方法
Sep 27 Javascript
原生js实现随机点名功能
Nov 05 Javascript
Element实现动态表格的示例代码
Aug 02 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 SQL之where语句生成器
2009/03/24 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
PHP实现图片压缩
2020/09/09 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
python实现图片二值化及灰度处理方式
2019/12/07 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
外语专业毕业生个人的自荐信
2013/11/19 职场文书
中专三年学习的个人自我评价
2013/12/12 职场文书
期中考试反思800字
2014/05/01 职场文书
微笑服务标语
2014/06/24 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
客户答谢会致辞
2015/01/20 职场文书
助学金感谢信
2015/01/20 职场文书
抢劫罪辩护词
2015/05/21 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
Oracle表空间与权限的深入讲解
2021/11/17 Oracle
Android中的Launch Mode详情
2022/06/05 Java/Android