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.alert 弹出式复选框实现代码
Jun 15 Javascript
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
Apr 15 Javascript
JavaScript判断DOM何时加载完毕的技巧
Nov 11 Javascript
cookie.js 加载顺序问题怎么才有效
Jul 31 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
超级给力的JavaScript的React框架入门教程
Jul 02 Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 Javascript
微信小程序 scroll-view实现锚点滑动的示例
Dec 06 Javascript
react 实现页面代码分割、按需加载的方法
Apr 03 Javascript
vue 中动态绑定class 和 style的方法代码详解
Jun 01 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
vue-cli项目无法用本机IP访问的解决方法
Sep 20 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的FTP学习(一)[转自奥索]
2006/10/09 PHP
PHP默认安装产生系统漏洞
2006/10/09 PHP
PHP中for循环语句的几种变型
2007/03/16 PHP
服务器web工具 php环境下
2010/12/29 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
关于Python的一些学习总结
2018/05/25 Python
python 为什么说eval要慎用
2019/03/26 Python
python 字典操作提取key,value的方法
2019/06/26 Python
pycharm配置git(图文教程)
2019/08/16 Python
pytorch 修改预训练model实例
2020/01/18 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
受欢迎的大学生自我评价
2013/12/05 职场文书
大学生在校表现评语
2014/12/31 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python