目录

Webpack 2.2 中文文档

EnvironmentPlugin

EnvironmentPlugin是在process.env 键(key) 上使用DefinePlugin的简写方式。

用法

EnvironmentPlugin接受任意一个键(key)的数组。

new webpack.EnvironmentPlugin(['NODE_ENV', 'DEBUG'])

这相当于以下 DefinePlugin 应用程序:

new webpack.DefinePlugin({
  'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
  'process.env.DEBUG': JSON.stringify(process.env.DEBUG)
})

>> 不指定环境变量会引发"`EnvironmentPlugin` - `${key}` environment variable is undefined"(环境变量未定义)错误。

## 带默认值的用法

或者,`EnvironmentPlugin` 支持一个对象,它将键(key)映射到其默认值。 如果在`process.env`中未定义键,则采用键键(key)的默认值。

```js
new webpack.EnvironmentPlugin({
  NODE_ENV: 'development', // 使用 'development' ,除非 process.env.NODE_ENV 被定义
  DEBUG: false
})

>> 来自 process.env are always strings的变量总是字符串。

>> 与DefinePlugin不同,默认值通过 EnvironmentPlugin 应用于JSON.stringify。

>> 要指定未设置的默认值,请使用 null 而不是 undefined。

示例

当在测试文件 entry.js 上运行以前的EnvironmentPlugin配置时,让我们查看结果:

if (process.env.NODE_ENV === 'production') {
  console.log('Welcome to production');
}
if (process.env.DEBUG) {
  console.log('Debugging output');
}

当在终端中执行 NODE_ENV=production webpack 构建时,entry.js变为:

if ('production' === 'production') { // <-- 'production' from NODE_ENV is taken
  console.log('Welcome to production');
}
if (false) { // <-- default value is taken
  console.log('Debugging output');
}

运行 DEBUG=false webpack 生成:

if ('development' === 'production') { // <-- default value is taken
  console.log('Welcome to production');
}
if ('false') { // <-- 'false' from DEBUG is taken
  console.log('Debugging output');
}
上一篇: 下一篇: