Javascript 用网页包去掉uu DEV_uu_u
如果我有这样的If语句:Javascript 用网页包去掉uu DEV_uu_u,javascript,webpack,Javascript,Webpack,如果我有这样的If语句: if(__DEV__) { // do stuff } module.exports = { plugins: [ new webpack.DefinePlugin({ __DEV__: JSON.stringify(JSON.parse(process.env.BUILD_DEV || 'true')) }) ] } 有没有一种方法可以使用webpack去掉这些if语句块 在没有不确定的条件下,或者我在这个问题的任何地方都声
if(__DEV__) {
// do stuff
}
module.exports = {
plugins: [
new webpack.DefinePlugin({
__DEV__: JSON.stringify(JSON.parse(process.env.BUILD_DEV || 'true'))
})
]
}
有没有一种方法可以使用webpack去掉这些if语句块
在没有不确定的条件下,或者我在这个问题的任何地方都声明我想引用环境变量
将此标记为重复RTFQ的学究可以吗?您可以在您的网页配置中定义插件。在您的配置中,您需要添加如下插件:
if(__DEV__) {
// do stuff
}
module.exports = {
plugins: [
new webpack.DefinePlugin({
__DEV__: JSON.stringify(JSON.parse(process.env.BUILD_DEV || 'true'))
})
]
}
通过这样做,您将用BUILD\u DEV
env var的值替换对的所有引用
由于在使用webpack构建时,您可能已经设置了NODE\u ENV
,因此您可以利用这一点。下面是另一种使用NODE\u ENV
的方法:
module.exports = {
plugins: [
new webpack.DefinePlugin({
__DEV__: process.env.NODE_ENV !== 'production'
})
]
}
正如@Felix Kling在评论中提到的,您还可以使用此技术定义多个功能标志,如下所示:
如果您在NODE\u ENV=production
的位置进行构建,您将拥有死代码。我相信当你运行你的缩小工具时,这个死代码会被删除。请看这里:请看@Louis,这完全不同。我在哪里问如何引用环境变量?我在问如何去掉DEV_u1;dag1你得到的一个答案是对另一个问题的答案进行重新整理。Felix Kling的链接指向一个页面,该页面可能是另一个问题的答案。是的,证据表明你的问题是重复的。也许你对另一个问题标题中的“环境”一词读得太多了。它通常意味着你的“构建环境”。人们通常使用process.env
(流程环境变量),但这不是必需的。有时你希望\uuu DEV\uuuu
在那里,有时你希望它被消除。您的生成环境决定了可以使用@dagda1DefinePlugin
更改任何变量。变量的来源完全不相关。如果愿意,您可以更改第三方库的内部变量。Webpack永远不会删除这些代码块。您可以使用DefinePlugin
将\uu DEV\uu
硬编码为常量(如true
或false
),因此代码最终看起来像if(false){/*…*/}
,这意味着大括号内的任何内容都是死代码。Webpack不会消除这些问题,因为您很可能希望在开发时看到生成的代码。另一方面,UglifyJS将在缩小过程中消除死代码,但此过程仅适用于生产版本(如运行webpack-p
或其他,具体取决于您使用的webpack版本)。