<分区>
如果我有这样的 if 语句:
if(__DEV__) {
// do stuff
}
有没有办法使用 webpack 去除这些 if 语句 block ?
毫无疑问,我是否在这个问题的任何地方声明我想引用环境变量。
将此标记为重复 RTFQ 的学究可以吗?
<分区>
如果我有这样的 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 - 我可以在保存之前使用 webpack Hook 来修改文件输出吗?
javascript - 一页上有多个 svg 的 D3 单击事件
javascript - 对于用 TypeScript 编写的项目,使用变量而不是具有相对路径的字符串
javascript - React.js 和 webpack - 为什么它不允许 var、let、const?
javascript - Webpack Extract-Text-Plugin localIdentName 在 DOM 中不起作用