javascript - 用 webpack 去掉 __DEV__

标签 javascript webpack

<分区>

如果我有这样的 if 语句:

if(__DEV__) {
  // do stuff
}

有没有办法使用 webpack 去除这些 if 语句 block ?

毫无疑问,我是否在这个问题的任何地方声明我想引用环境变量。

将此标记为重复 RTFQ 的学究可以吗?

最佳答案

您可以在您的 webpack 配置中定义一个插件。在您的配置中,您需要添加这样的插件:

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

通过这样做,您将用 BUILD_DEV 环境变量的值替换所有对 __DEV__ 的引用。

由于您在使用 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

关于javascript - 用 webpack 去掉 __DEV__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47993583/

相关文章:

javascript - 无法让 ng-repeat 工作

javascript - 我可以在保存之前使用 webpack Hook 来修改文件输出吗?

javascript - 元素内副本的宽度

javascript - 一页上有多个 svg 的 D3 单击事件

javascript - 对于用 TypeScript 编写的项目,使用变量而不是具有相对路径的字符串

javascript - React.js 和 webpack - 为什么它不允许 var、let、const?

javascript - Webpack 构建不适用于爬虫

javascript - Webpack Extract-Text-Plugin localIdentName 在 DOM 中不起作用

javascript - 如何使用 Jquery 使内部 div 触发对外部 div 的拖动效果?

javascript - 谁能解释一下jquery中函数的执行过程