2017-08-03 151 views
2

我想通過一個命令行(特別是不在版本控制)選項到我的主要index.js腳本,它執行一些基於特定S3存儲桶的東西。將命令行變量傳遞給npm腳本?

在我的package.json:

"scripts": { 
    "start": "bucket_name=${bucket_name:=null} node babel.runtime.js" 
}, 

,並通過命令行:

npm start -- --bucket_name="test" 

bucket_name保持回來爲空,所以VAR沒有被正確傳遞。我認爲這很簡單,但我無法弄清楚我做錯了什麼。

+0

[將命令行參數發送到npm腳本]的可能的副本(https://stackoverflow.com/questions/11580961/sending-command-line-arguments-to-npm-script) – Mikko

+0

將您的開始腳本設置爲:'節點babel.runtime.js'並從終端執行'BUCKET_NAME = test npm start'。它應該在'process.env.BUCKET_NAME'中提供 –

回答

2

您提出了兩種將變量分配給過程的獨立方法。

第一個,使用npm script

"scripts": { 
    "start": "bucket_name=${bucket_name:=null} node babel.runtime.js" 
} 

這種方法設置bucket_name環境變量這從process.env.bucket_name訪問。

第二種方法,通過命令行

npm start -- --bucket_name="test" 

這種方法設置運行進程的bucket_name作爲參數。這可從process.argv陣列訪問。

它並不是說變量沒有被設置爲一種或另一種方式,它只是在您訪問的位置。其中每個都在不同的地方設置bucket_name

相關問題