webpack打包优化点
1. noParse
作用主要是过滤不需要解析的文件,比如打包的时候依赖了三方库(jquyer、lodash)等,而这些三方库里面没有其他依赖,可以通过配置noParse不去解析文件,提高打包效率。
是module中的一个属性,设置一个正则表达式,过滤多个库以|分割
module: {
noParse: '/jquery|lodash/',
// rules:[]
}
2. 包含和排除目录
指定loader解析的规则,配置包含和排除目录一般两者写其一就行。
{
test: /\.js$/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'], // 预设,转换js语法
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }], // 解析类的装饰器
["@babel/plugin-proposal-class-properties", { "loose": true }], // 解析类的属性
"@babel/plugin-transform-runtime", // 解析promise,Generator等新的API
]
}
},
include: path.resolve(__dirname, 'src'),
exclude: /node_modules/
}
3. IgnorePlugin
该插件是webpack的内置插件,用于忽略某些特定的模块,不被webpack打包进去。
在实际开发项目时,moment库是非常常用的处理时间的库,虽然设置了语种为中文zh-cn,但是在打包的时候,还是会将所有语言都打包进去。就导致包很大,打包速度慢,locale 目录中存放的是多语种的语言包,不希望全部被打包进文件。此时就可以配置下IgnorePlugin
// src/index.js
import moment from 'moment'
// 忽略locale后,就必须手动单独引入需要的语言包
import 'moment/locale/zh-cn';
moment.locale('zh-cn'); //设置中文
let r = moment().endOf('day').fromNow();
console.log(r);
// webpack.config.js
let Webpack = require('webpack');
module.exports = {
plugins:[
new Webpack.IgnorePlugin(/\.\/locale/,/moment/), // locale 目录中存放的是多语种的语言包,不希望全部被打包进文件
]
}
4. happypack
多线程打包,多用于大型项目,因为在项目很小的时候,效果反而会慢,因为而分配线程,也会消耗时间。
npm install happypack
let HappyPack = require('happypack');
module.exports = {
// ...
module:{
rules:[
{
test:/\.js$/,
use:'HappyPack/loader?id=js' // id=js 代表打包js
},
{
test:/\.css$/,
use:'HappyPack/loader?id=css' // id=css 代表打包css
}
]
},
plugins:[
new HappyPack({
id:'css', // 打包css
use:['style-loader','css-loader']
}),
new HappyPack({
id:'js', // 打包js
use:[{ // 原本rules中 loader的配置即可
loader:'babel-loader',
options:{
presets:['@babel/presets-env', '@babel/presets-react']
}
}]
})
]
}
5. DllPlugin动态链接库
之前专门整理过完整的一篇关于DllPlugin动态链接库的学习笔记,由于时间和精力的关系,不在赘述,感兴趣的同学可以跳转链接了解一下。
webpack性能优化方式之dll--- webpack.dll.config.js
6. 热更新
之前专门整理过完整的一篇关于webpack热更新的学习笔记,由于时间和精力的关系,不在赘述,感兴趣的同学可以跳转链接了解一下。
webpack4.15.1 学习笔记(三) — 模块热替换HMR
7. 开发环境 tree-shaking
之前专门整理过完整的一篇关于webpack tree-shaking的学习笔记,由于时间和精力的关系,不在赘述,感兴趣的同学可以跳转链接了解一下。
webpack4.15.1 学习笔记(四) — Tree shaking
8. 抽离公共代码
之前专门整理过完整的一篇关于webpack抽离公共代码的学习笔记,由于时间和精力的关系,不在赘述,感兴趣的同学可以跳转链接了解一下。
webpack4.15.1 学习笔记(六) — 代码拆分(Code Splitting)
9. 懒加载
之前专门整理过完整的一篇关于webpack懒加载的学习笔记,由于时间和精力的关系,不在赘述,感兴趣的同学可以跳转链接了解一下。
webpack4.15.1 学习笔记(七) — 懒加载(Lazy Loading)
webpack打包优化点的更多相关文章
- Webpack 打包优化之速度篇
在前文 Webpack 打包优化之体积篇中,对如何减小 Webpack 打包体积,做了些探讨:当然,那些法子对于打包速度的提升,也是大有裨益.然而,打包速度之于开发体验和及时构建,相当重要:所以有必要 ...
- Webpack 打包优化之体积篇
谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝 ...
- 记一次webpack打包优化
未进行打包优化的痛点: 随着项目的不断扩大,引入的第三方库会越来越多,我们每次build的时候会对所有的文件进行打包,耗时必定很长,不利于日常开发. 解决思路: 第三方库我们只是引入到项目里来,一般不 ...
- webpack打包优化之外部扩展externals的实际应用
目录 前言 externals定义 用法 string array object function regex 实际案例 打包时间 打包之后包的大小 浏览器加载 需要注意 参考 前言 使用vue-cl ...
- [转] Webpack 打包优化之体积篇
谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝 ...
- webpack打包优化并开启gzip
应用场景:项目使用webpack2.x进行打包,打包后静态资源通过nginx转发配置: 问题:webpack打包后的资源文件特别,特别大,没打包之前页面一个页面js有2M左右(其中已经抽离了css)? ...
- 基于CommonsChunkPlugin,webpack打包优化
前段时间一直在基于webpack进行前端资源包的瘦身.在项目中基于路由进行代码分离,http://www.cnblogs.com/legu/p/7251562.html.但是打包的文件还是很大,特别是 ...
- webpack 打包优化的四种方法(多进程打包,多进程压缩,资源 CDN,动态 polyfill)
如今,webpack 毫无疑问是前端构建领域里最耀眼的一颗星,无论你前端走哪条路线,都需要有很强的webpack 知识.webpack 的基本用法这里就不展开讲了.主要探讨一下如何提高 webpack ...
- (webpack系列二)webpack打包优化探索
虽然webpack的已经升级到了webpack4,而我们目前还在使用webpack3,但其中的优化点都大同小异,升级后同样适用. 性能优化初步原则 减小代码量 减小请求数 最大化利用浏览器缓存 这三条 ...
随机推荐
- RPA应用场景-报税机器人
场景概述 报税机器人 所涉系统名称 税务网站 人工操作(时间/次) 53分钟 所涉人工数量 60 操作频率 每月 场景流程 1.通过RPA自动将财税信息从对应系统中导出 2.RPA根据不同的税务报表规 ...
- 从Mpx资源构建优化看splitChunks代码分割
背景 MPX是滴滴出品的一款增强型小程序跨端框架,其核心是对原生小程序功能的增强.具体的使用不是本文讨论的范畴,想了解更多可以去官网了解更多. 回到正题,使用MPX开发小程序有一段时间了,该框架对不同 ...
- 『现学现忘』Docker基础 — 41、将本地镜像推送到阿里云
目录 1.准备工作 2.阿里云容器镜像仓库的使用 (1)创建命名空间 (2)创建容器镜像 (3)查看阿里云镜像仓库的信息 3.将本地Docker镜像推送到阿里云 (1)登陆阿里云 (2)给镜像生成版本 ...
- TCP和UDP协议的区别以及原理
参考文章https://blog.csdn.net/weixin_38483133/article/details/123864253
- 使用EasyExcel导出图片及异常处理
1.使用String类型导出 定义自己的Converter,不使用默认的StringImageConverter 如果图片路径为空或者图片路径是错误的,返回相应的内容 import java.io ...
- sql server 开启一个事务
开启事务,回滚 /*============================================================== */ /* Date : 2020年11月18日 11 ...
- vscode的安装、切换为中文简体、集成sass
VScode设置中文 打开vscode ,按快捷键"Ctrl+Shift+P" 输入configure language,回车 选择安装其他语言 (默认是英文的) 选择简体中安装( ...
- 微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
之前的文章中我们介绍了如何通过 Nocalhost 快速开发 Rainbond 上的微服务,介绍了基本的开发流程. 本文将续接上文继续介绍,使用 Nocalhost 开发配置文件 实现以下内容: 一键 ...
- Tapdata 在线研讨会:如何快速上手 Tapdata Cloud?
偶然接触到 Tapdata Cloud,据说不仅可以实现异构数据实时同步,还永久 100% 免费,但就是不知道怎么获取.怎么用? 打开相关文档逐渐陷入迷茫,术语."黑话"随处可见, ...
- [NOIP2015 提高组] 运输计划题解
题目链接:P2680 [NOIP2015 提高组] 运输计划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 看了好长时间题解才终于懂的,有关lca和二分答案的题解解释的不详细,一时 ...