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 模式对话框终极版实现代码
Sep 28 Javascript
有道JavaScript监听浏览器的问题
Jun 23 Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
解析javascript瀑布流原理实现图片滚动加载
Mar 10 Javascript
Vue.js学习示例分享
Feb 05 Javascript
vue2组件实现懒加载浅析
Mar 29 Javascript
js中字符型和数值型数字的互相转化方法(必看)
Apr 25 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
使用JS判断移动端手机横竖屏状态
Jul 30 Javascript
js实现轮播图效果 z-index实现轮播图
Jan 17 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 进度条实现代码
2009/03/10 PHP
php面向对象 字段的声明与使用
2012/06/14 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
在Django的通用视图中处理Context的方法
2015/07/21 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
财务学生的职业生涯发展
2014/02/11 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
环保公益策划方案
2014/08/15 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
详解Vue slot插槽
2021/11/20 Vue.js
把77A收信机改造成收音机
2022/04/05 无线电
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB