将env。 vars会影响node_modules的导入吗?

时间:2016-11-20 04:44:59

标签: node.js npm webpack

我正在从我的项目中将一些实用程序函数提取到npm modules中,以便我可以在其他项目中使用它们。

其中一些功能依赖于API Keys,并对API KeysDEV环境使用不同的PROD

在主项目中,这不是问题,因为我的build流程正确设置了environment vars,而我的webpack build流程会生成正确的keys源代码。

如果我将API Keys中的npm modules包含在同一个DEV | PROD三元组中,那么主要项目的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"

1 个答案:

答案 0 :(得分:0)

我可能误解了你的问题,但你所使用的不是环境变量。它们可能是您正在使用Webpack的DefinePlugin填充的变量,例如

new webpack.DefinePlugin({
    __PROD__: true
})

当Webpack编译代码时,插件会自动将这些神奇的全局变量替换为配置文件中的值。

在节点中使用环境变量的正确方法是process.env,如process.env.__PROD__中所示,并使用__PROD__=true node index.js或更常见的约定{{1}运行程序}}

如果您要将已编译的Webpack代码发布到npm,那么它应该与您为npm compile Webpack配置设置的任何NODE_ENV=production node index.js值一起使用。