网站首页 > 技术文章 正文
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使用流程)
- 11-23儿童发烧怎么办简单的退烧方法
- 11-23微信如何群发消息给所有人(微信如何群发消息给所有人全选)
- 11-23腾达路由器手机登录(腾达路由器官网页登录)
- 11-23防火墙关闭对电脑有影响吗(防火墙关闭有什么影响)
- 11-23联想笔记本电脑官网查询真伪入口
- 11-23申请恢复qq群(申请恢复qq群聊怎么恢复)
- 11-23苹果查询激活日期和保修期限
- 11-23u盘提示格式化但无法格式化(u盘提示格式化却无法格式化)
- 最近发表
- 标签列表
-
- 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 (77)
- vector线程安全吗 (73)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
