簡體   English   中英

webpack 中的編譯時變量,NODE_ENV 是特殊的嗎?

[英]Compile-time variables in webpack, is NODE_ENV special?

我正在使用 webpack 4.41.6。

如果我在我的一個 JS 文件中有這個:

const var1 = process.env.NODE_ENV === 'development' ? 'foo' : 'bar';
const var2 = process.env.SOME_VAR === 'something' ? 'moo' : 'cow';

console.log(var1, var2);

然后運行SOME_VAR=something NODE_ENV=production webpack ,我得到:

a="something"===e.env.SOME_VAR?"moo":"cow";console.log("bar",a);

NODE_ENV 有什么特別之處? 如何使用 SOME_VAR 獲得相同的編譯時優化?

感謝您對此的任何幫助。

我從webpack gitter那里得到了一些幫助; 他們將我指向DefinePluginMode的方向。

事實證明NODE_ENV特殊,它會導致生成這樣的東西:

new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV) })

我忽略了這一點,因為我的 webpack 配置或節點依賴項中沒有 DefinePlugin; 顯然它是內置的?

我將此添加到我的 webpack 配置中,現在它可以按我希望的方式工作:

plugins.push(
  new webpack.DefinePlugin({
    'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
    'process.env.SOME_VAR': JSON.stringify(process.env.SOME_VAR)
  })
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM