用webpack删除__DEV__

时间:2017-12-27 14:07:22

标签: javascript webpack

如果我有这样的if语句:

if(__DEV__) {
  // do stuff
}

是否有办法使用webpack去除这些if语句块?

毫无疑问,或者我在这个问题的任何地方都要说明我想引用环境变量。

将这个标记为重复的RTFQ的学生可以吗?

1 个答案:

答案 0 :(得分:1)

您可以在webpack配置中定义插件。在您的配置中,您将要添加如下插件:

module.exports = {
  plugins: [
    new webpack.DefinePlugin({
      __DEV__: JSON.stringify(JSON.parse(process.env.BUILD_DEV || 'true'))
    })
  ]
}

通过这样做,您将__DEV__的所有引用替换为BUILD_DEV env var的值。

由于您在使用webpack构建时可能已经设置NODE_ENV,因此您可以利用它。这是使用NODE_ENV的另一种方式:

module.exports = {
  plugins: [
    new webpack.DefinePlugin({
      __DEV__: process.env.NODE_ENV !== 'production'
    })
  ]
}

正如@Felix Kling在评论中提到的,你也可以使用这种技术来定义多个功能标志,如下所示:https://github.com/petehunt/webpack-howto#6-feature-flags

如果您使用NODE_ENV=production进行构建,那么您将拥有死代码。我相信当您运行缩小工具时会删除此死代码。见这里:https://medium.com/@roman01la/dead-code-elimination-and-tree-shaking-in-javascript-build-systems-fb8512c86edf