如果我有这样的if语句:
if(__DEV__) {
// do stuff
}
是否有办法使用webpack去除这些if语句块?
毫无疑问,或者我在这个问题的任何地方都要说明我想引用环境变量。
将这个标记为重复的RTFQ的学生可以吗?
答案 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