使用mode和webpack.EnvironmentPlugin是否冗余?

时间:2018-07-03 21:26:21

标签: webpack webpack-4

试图了解webpack.EnvironmentPlugin在为我做什么。

使用modewebpack.EnvironmentPlugin是否多余?

module.exports = merge(webpackCommonConfig, {
  mode: 'development',
  ...
  plugins: [
    new webpack.EnvironmentPlugin({ NODE_ENV: 'development' }),
  ],
  ...
});

TLDR: 仅此示例的简短答案:是的,它是多余的。

长答案:除了说模式正在更改NODE_ENV的env var之外,还有很多事情要做。从表面上看,new webpack.EnvironmentPlugin({ NODE_ENV: 'development' })似乎只是在运行,而是在运行。

1 个答案:

答案 0 :(得分:6)

仅适用于此特定用例!

TL; DR;

--mode development自动设置: process.env.NODE_ENVdevelopment

--mode production自动设置: process.env.NODE_ENVproduction

您不需要添加以下插件: new webpack.EnvironmentPlugin({ NODE_ENV: 'development' }),

这将是 的设置,该设置将冗余,因为在使用{{时,NODE_ENV: 'development|production'将自动设置1}}!

如果您未设置--mode,它将自动默认为--mode

继续阅读,以了解production为何实际上不是多余的,以及它实际上是做什么的:


如果将--mode设置为--modeproduction,实际上会发生什么:

模式:开发

  

development设置为值process.env.NODE_ENV
   
启用:
development
NamedChunksPlugin

模式:生产

  

NamedModulesPlugin设置为值process.env.NODE_ENV

  启用:
production
FlagDependencyUsagePlugin
  FlagIncludedChunksPlugin
ModuleConcatenationPlugin,   NoEmitOnErrorsPlugin
OccurrenceOrderPlugin
SideEffectsFlagPlugin

UglifyJsPlugin将不同的插件添加到编译过程中,具体取决于为--mode设置的值。

>> Reference

  

请记住,设置NODE_ENV不会自动设置模式