2016-11-20 74 views
0

我從我的項目中提取一些實用功能到npm modules,所以我可以在其他項目中使用它們。將env。變量影響從node_modules進口?

其中一些功能依賴於API Keys,並針對DEVPROD環境使用不同的API Keys

在主要項目,這不是一個問題,因爲我build過程中正確設置environment vars,並在源代碼中的正確keyswebpack build處理結果。

如果我包括在npm modules具有相同DEV | PROD ternaries的API Keys,將主體工程的environment vars的工作方式相同的模塊,因爲他們沒有對代碼的時候它是在主項目?

// mymodule/index.js 
export default function() { 
    return __PROD__ === true ? "abc" : "123" 
    // .... 
} 

// project/index.js in __DEV__ environment 
import getKey from 'my-module' 

getKey() // should return "123" 

回答

0

我可能會誤解你的問題,但你使用的不是環境變量。他們很可能你使用的WebPack的DefinePlugin填寫變量,如

new webpack.DefinePlugin({ 
    __PROD__: true 
}) 

當的WebPack編譯代碼,插件會自動與配置文件中的值替換這些神奇的全局變量。

在節點使用環境變量正確的方法是process.env,如process.env.__PROD__,並且用類似__PROD__=true node index.js運行您的程序,或者更常見的約定NODE_ENV=production node index.js

如果您要將已編譯的Webpack代碼發佈到npm,那麼它應該與您爲npm編譯Webpack配置設置的任何DefinePlugin值一起工作。