2015-03-30 12 views
3

我有一個變量.ENV文件中像這樣運行:添加.ENV vairables爲給定的命令

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)我運行後,它會仍然可以訪問這些變量,我正在寫一個node.js測試考慮了這些變量,我很樂意能夠在不使用這些.env變量的情況下運行相同的命令,而不必擔心它們是否仍在會話中。理想情況下,我想運行

put-env-variables-for-this-command-first-command node test && node test 

並且env變量僅在測試腳本第一次運行時纔可用。

+0

慶典讓你做具體的'FOO =酒吧。/ script'變量,設置$ FOO的「劇本」的生活。 – 2015-03-30 20:31:20

+0

@MarcB我如何以編程方式'貓'腳本的生命'.env'的內容?假設我在'.env'中有20個變量我不想每次都手動寫入它們:/ – ThomasReggi 2015-03-30 20:31:47

回答

3

這會給你的node test調用期間訪問變量只有

env $(<.env) node test 
+0

哇,這很完美,非常感謝! – ThomasReggi 2015-03-30 20:39:37

0

我開始使用foreman此其用於與Heroku的工具區捆綁在一起。它不再包含,但是有一個名爲forego的獨立版本非常適用。

brew install forego在Mac上。

然後你可以用它來支撐.env變量到當前進程中。

forego run ${ANY COMMAND}

例子

  • forego run babel-node index.js
  • forego run node index.js
  • forego run npm start