前言:
而今同学们对“webpack现在有哪几个版本”大概比较关注,姐妹们都需要剖析一些“webpack现在有哪几个版本”的相关文章。那么小编同时在网络上汇集了一些对于“webpack现在有哪几个版本””的相关资讯,希望同学们能喜欢,咱们一起来学习一下吧!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(); });}
关注我,了解更多前端面试题~
标签: #webpack现在有哪几个版本