码迷,mamicode.com
首页 > Web开发 > 详细

webpack3和webpack4区别

时间:2019-07-04 14:26:59      阅读:420      评论:0      收藏:0      [点我收藏+]

标签:span   代码优化   自动   开发   验证   自己的   imp   有一个   extract   

1.mode

webpack增加了一个mode配置,只有两种值development | production。对不同的环境他会启用不同的配置。

比如设置mode等于‘development‘,会将 process.env.NODE_ENV 的值设为 development,开发环境下启用optimization.nameModules(原nameModulesPlugin已经弃用)。设置mode等于‘production‘,会将 process.env.NODE_ENV 的值设为 production,而生产环境默认用optimization.noEmitOnErrors`(原noEmitOnErrorsPlugin已弃用)

webpack4中通过内置的mode使用相应模式的内置优化。设置mode等于‘development‘,会将 process.env.NODE_ENV 的值设为 development。启用 NamedChunksPlugin 和 NamedModulesPlugin。设置mode等于‘production‘,会将 process.env.NODE_ENV 的值设为 production。启用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 UglifyJsPlugin.

不同环境下配置如下

1 默认生产环境开起了很多代码优化(minify, splite)
2 开发时开启注视和验证,并加上了evel devtool
3 生产环境不支持watching,开发环境优化了打包的速度
4 生产环境开启模块串联(原ModulecondatenationPlugin)
5 自动设置process.env.NODE_EVN到不同环境,也就是不使用DefinePlugin了
6 如果mode设置none,所有默认设置都去掉了。

 

2.CommonsChunkPlugin

CommonChunksPlugin已经从webpack4中移除。可使用optimization.splitChunks进行模块划分(提取公用代码)。

但是需要注意一个问题,默认配置只会对异步请求的模块进行提取拆分,如果要对entry进行拆分,需要设置optimization.splitChunks.chunks = ‘all‘。

对应之前我们拆分runtime的情况,现在也有一个配置optimization.runtimeChunk,设置为true就会自动拆分runtime文件

 

3.webpack4使用MiniCssExtractPlugin取代ExtractTextWebpackPlugin。

4.代码分割。

使用动态import,而不是用system.import或者require.ensure

5.vue-loader。

使用vue-loader插件为.vue文件中的各部分使用相对应的loader,比如css-loader等

6.UglifyJsPlugin

现在也不需要使用这个plugin了,只需要使用optimization.minimize为true就行,production mode下面自动为true

optimization.minimizer可以配置你自己的压缩程序

 

 



 

webpack3和webpack4区别

标签:span   代码优化   自动   开发   验证   自己的   imp   有一个   extract   

原文地址:https://www.cnblogs.com/Super-scarlett/p/11085363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!