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 相关文章推荐
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
May 13 Javascript
js实现网页抽奖实例
Aug 05 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
Aug 28 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
使用jQuery监听DOM元素大小变化
Feb 24 Javascript
如何正确理解javascript的模块化
Mar 02 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
Sep 05 Javascript
Angular7创建项目、组件、服务以及服务的使用
Feb 19 Javascript
javascript实现导航栏分页效果
Jun 27 Javascript
JS实现简单tab选项卡切换
Oct 25 Javascript
JS实现刷新网页后之前浏览位置保持不变示例详解
Aug 14 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
php session 错误
2009/05/21 PHP
PHP对象Object的概念 介绍
2012/06/14 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
js更优雅的兼容
2010/08/12 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
python实现rest请求api示例
2014/04/22 Python
python实现简单的TCP代理服务器
2014/10/08 Python
详细介绍Python函数中的默认参数
2015/03/30 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
详解Python如何生成词云的方法
2018/06/01 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
客户经理岗位职责
2013/12/08 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
Python中threading库实现线程锁与释放锁
2021/05/17 Python
Python 文字识别
2022/05/11 Python