Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用网页包去掉uu DEV_uu_u_Javascript_Webpack - Fatal编程技术网

Javascript 用网页包去掉uu DEV_uu_u

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语句:

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
在那里,有时你希望它被消除。您的生成环境决定了可以使用@dagda1
DefinePlugin
更改任何变量。变量的来源完全不相关。如果愿意,您可以更改第三方库的内部变量。Webpack永远不会删除这些代码块。您可以使用
DefinePlugin
\uu DEV\uu
硬编码为常量(如
true
false
),因此代码最终看起来像
if(false){/*…*/}
,这意味着大括号内的任何内容都是死代码。Webpack不会消除这些问题,因为您很可能希望在开发时看到生成的代码。另一方面,UglifyJS将在缩小过程中消除死代码,但此过程仅适用于生产版本(如运行
webpack-p
或其他,具体取决于您使用的webpack版本)。