网站首页 > 技术文章 正文
2018年8月25号webpack4正式发布。再次之后只要使用npm install webpack命令,默认安装的就是版本4。在不知道情况下,像我一样的小白就会跳入各种坑中。接下来我说说版本4与以前版本的区别之处。
如何查看当前的webpack版本:
//控制台输出
webpack -v
一、mode的变化
了解 mode 工作机制。
webpack4中增加了mode 的选项:
module.exports = { mode: 'production'//development,none };
也可以在CLI参数中传递
webpack --mode=production
支持以下字符串值:
development
会将 process.env.NODE_ENV 的值设为 development。启用 NamedChunksPlugin 和 NamedModulesPlugin。
production会将 process.env.NODE_ENV 的值设为 production。启用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 UglifyJsPlugin.
记住,只设置 NODE_ENV,则不会自动设置 mode。
webpack.config.js中去掉了一些插件,选择production模式会默认使用:
module.exports = {
// ...
plugins: [
- new NoEmitOnErrorsPlugin(),
- new ModuleConcatenationPlugin(),
- new DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("production") })
- new UglifyJsPlugin()
],
}
当你选择development时:
module.exports = {
// ...
plugins: [
- new NamedModulesPlugin()
],
}
被弃用的插件(4中已删除的):
module.exports = {
// ...
plugins: [
- new NoErrorsPlugin(),
- new NewWatchingPlugin()
],
}
二、webpack4 去掉了 CommonsChunkPlugin
解释:CommonsChunkPlugin主要是用来提取第三方库和公共模块,避免首屏加载的bundle文件或者按需加载的bundle文件体积过大,从而导致加载时间过长,着实是优化的一把利器。
CommonsChunkPlugin删除后,改成使用optimization.splitChunks进行模块划分,详细文档看这里。
官方的说法是默认设置已经对大部分用户来说非常棒了,但是需要注意一个问题,默认配置只会对异步请求的模块进行提取拆分,如果要对entry进行拆分,需要设置optimization.splitChunks.chunks = 'all'。
三、UglifyJsPlugin弃用
用途:uglifyJsPlugin 用来对js文件进行压缩,从而减小js文件的大小,加速页面load速度。
if(isProduction){
module.exports.plugins.push(
new webpack,optimize.UglifyJsPlugin({sourceMap:true})
)
}
webpack4中,也不需要使用这个plugin了,只需要使用optimization.minimize为true就行,production mode下面自动为true,optimization.minimizer可以配置你自己的压缩程序
用法:
module.exports = {
// ...
optimization: {
minimize:false
}
}
四、import() and CommonJS 的变化
non-esm.js
module.exports = {
sayHello: () => {
console.log('hello world');
}
};
example.js
function sayHello() {
import('./non-esm.js').then(module => {
module.default.sayHello();
});
}
关注我,了解更多前端面试题~
猜你喜欢
- 2024-10-04 Webpack 4.X 从入门到精通-entry与output(一)
- 2024-10-04 Webpack核心概念与安装使用(webpack的核心概念)
- 2024-10-04 Webpack优化构建速度(webpack做过哪些优化)
- 2024-10-04 「 webpack 」 webpack 构建基本参数配置
- 2024-10-04 再不了解就落伍了!揭开构建神器webpack神秘面纱
- 2024-10-04 带你深度解锁Webpack系列(优化篇)
- 2024-10-04 你配置 Webpack 4 的方式可能是错的!
- 2024-10-04 Vue_Webpack详解(vue使用webpack)
- 2024-10-04 带你深度解锁Webpack系列(基础篇)
- 2024-10-04 Webpack快速入门(webpack使用流程)
- 10-02基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- 10-02Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- 10-02AWD-LSTM语言模型是如何实现的_lstm语言模型
- 10-02NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 10-02使用ONNX和Torchscript加快推理速度的测试
- 10-02tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- 10-02Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- 10-02Gateway_gateways
- 最近发表
-
- 基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- AWD-LSTM语言模型是如何实现的_lstm语言模型
- NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 使用ONNX和Torchscript加快推理速度的测试
- tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- Gateway_gateways
- Coze开源本地部署教程_开源canopen
- 扣子开源本地部署教程 丨Coze智能体小白喂饭级指南
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)