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 相关文章推荐
Mootools 1.2教程 定时器和哈希简介
Sep 15 Javascript
jQuery实现的立体文字渐变效果
May 17 Javascript
密码强度检测效果实现原理与代码
Jan 04 Javascript
js创建一个input数组并绑定click事件的方法
Jun 12 Javascript
jquery插件orbit.js实现图片折叠轮换特效
Apr 14 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
使用jQuery加载html页面到指定的div实现方法
Jul 13 Javascript
Bootstrap常用组件学习(整理)
Mar 24 Javascript
微信小程序canvas拖拽、截图组件功能
Sep 04 Javascript
ES6使用export和import实现模块化的方法
Sep 10 Javascript
原生JavaScript实现刮刮乐
Sep 29 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
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
php事件驱动化设计详解
2016/11/10 PHP
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
node.js中watch机制详解
2014/11/17 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
python pygame实现五子棋小游戏
2020/10/26 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
应届生护士求职信
2013/11/01 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
投诉书格式范本
2015/07/02 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python