2016-11-20 42 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值一起工作。