在Linux bash中获取环境变量并传递给webpack

3

我查看了许多关于“webpack中的环境变量”的SO问题,例如使用DefinePlugin:

new webpack.DefinePlugin({'ENV': JSON.stringify('staging')})

但是我实在想不出一种方法来注入在Linux Bash Shell中定义的环境变量,而不是使用硬编码的“staging”字符串。

在我的生产和测试环境中,我定义了变量,例如$ENV$API_KEY,我想在我的webpack / ReactJs代码中使用它们的值。

编辑

我注意到,如果我从cli运行webpack命令:

 $ ENVIRONMENT=staging
 $ node_modules/.bin/webpack -p

在我的webpack.config.js文件中定义了:

 new webpack.DefinePlugin({'ENV': JSON.stringify(process.env.ENVIRONMENT)})

以下内容无法正常工作(我的JS代码中未定义ENV),

但是,如果我在同一行上运行它,似乎可以正常工作 - 在webpack.config.js文件中似乎可以使用ENVIRONMENT:

$ ENVIRONMENT=staging node_modules/.bin/webpack -p

我希望能够在不将ENVIRONMENT变量与webpack命令放在同一行的情况下使其正常工作。


1
使用 process.env.$ENV - Andrew Li
2个回答

4

nodejs中,您可以通过process.env对象获取环境变量。在您的情况下,您可以使用process.env.$ENVprocess.env.$API_KEY分别获取$ENV$API_KEY环境变量。


1
对我来说,$ 符号会干扰。这个可以:process.env.FOO,而不是 process.env.$FOO。这是在 webpack.config.js 文件中的情况。 - Jonathan.Brink

2

我太蠢了,在bash终端中忘记导出变量了。

$ export ENVIRONMENT=staging 
$ node_modules/.bin/webpack -p

这工作得很好,正如提示的那样,一个人可以通过 process.env.ENVIRONMENTwebpack.config.js 内部访问 ENVIRONMENT 变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接