试图了解webpack.EnvironmentPlugin
在为我做什么。
使用mode
和webpack.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' })
似乎只是在运行,而是在运行。
答案 0 :(得分:6)
仅适用于此特定用例!
TL; DR;
--mode development
自动设置:
process.env.NODE_ENV
值development
--mode production
自动设置:
process.env.NODE_ENV
值production
您不需要添加以下插件:
new webpack.EnvironmentPlugin({ NODE_ENV: 'development' }),
这将是仅 的设置,该设置将冗余,因为在使用{{时,NODE_ENV: 'development|production'
将自动设置1}}!
如果您未设置--mode
,它将自动默认为--mode
!
继续阅读,以了解production
为何实际上不是多余的,以及它实际上是做什么的:
如果将--mode
设置为--mode
或production
,实际上会发生什么:
模式:开发
将
development
设置为值process.env.NODE_ENV
。
启用:
development
和NamedChunksPlugin
。
模式:生产
将
NamedModulesPlugin
设置为值process.env.NODE_ENV
。
启用:
production
,
FlagDependencyUsagePlugin
,
FlagIncludedChunksPlugin
,
ModuleConcatenationPlugin
,NoEmitOnErrorsPlugin
,
OccurrenceOrderPlugin
和SideEffectsFlagPlugin
。
UglifyJsPlugin
将不同的插件添加到编译过程中,具体取决于为--mode
设置的值。
请记住,设置NODE_ENV不会自动设置模式