我有一个包含变量的.env文件,如下所示:
HELLO=world
SOMETHING=nothing
前几天我发现了这个很棒的脚本,它将这些变量放到当前会话中,所以当我运行这样的东西时
$(cat ./.env | grep -v ^# | xargs) && node test
然后我可以访问test.js
节点文件中的变量。
console.log(process.env.HELLO)
console.log(process.env.SOMETHING)
这个问题是该命令将.env变量放在整个会话中,所以当我运行node test
而不运行$(cat ./.env | grep -v ^# | xargs)
后,它仍然可以访问这些变量,I& #39;我正在编写一个node.js测试来解释这些变量,并且我喜欢能够使用和不使用这些.env变量运行相同的命令,而不必担心它们是否仍在会话中。理想情况下我想运行
put-env-variables-for-this-command-first-command node test && node test
并且env变量仅在第一次运行时在测试脚本中可用。
答案 0 :(得分:3)
这将使您在调用node test
env $(<.env) node test
答案 1 :(得分:0)
我开始使用foreman
这个曾经与heroku工具带捆绑在一起。它不再包括在内,但是有一个名为forego
的独立版本可以很好地运行。
brew install forego
。
然后,您可以使用它将.env
变量支持到当前流程中。
forego run ${ANY COMMAND}
实施例
forego run babel-node index.js
forego run node index.js
forego run npm start