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 相关文章推荐
13 个JavaScript 性能提升技巧分享
Jul 26 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
Apr 06 Javascript
javascript中callee与caller的区别分析
Apr 20 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
Nov 16 Javascript
jQuery实现最简单实用的分秒倒计时
Feb 05 Javascript
Bootstrap导航简单实现代码
Mar 06 Javascript
jQuery插件Echarts实现的渐变色柱状图
Mar 23 jQuery
Angular2使用jQuery的方法教程
May 28 jQuery
video.js 实现视频只能后退不能快进的思路详解
Aug 09 Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 19 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 Javascript
JavaScript读取本地文件常用方法流程解析
Oct 12 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编写RESTful接口
2016/02/23 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
Python 流程控制实例代码
2009/09/25 Python
python构建指数平滑预测模型示例
2019/11/21 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Python如何给函数库增加日志功能
2020/08/04 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
临床医师个人自我评价
2014/04/06 职场文书
中介业务员岗位职责
2014/04/09 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
销售口号大全
2014/06/11 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python