[英]Why is npm passing cmd line flags directly to my script?
我正在使用npm運行構建,並且嘗試使用cmd線標志覆蓋我的.npmrc配置選項。 但是npm堅持將這些標志直接傳遞給我的腳本,而不是按照文檔中的描述將其作為配置選項讀取。 我究竟做錯了什么?
從cmd行,我嘗試構建一個Tizen pacakge,如下所示:
npm run package --tizen_profile myprofile
在我的package.json中,我有:
"package": "tizen package -t wgt --sign $npm_package_config_tizen_profile -- .buildResult/wgt -o .buildResult/wgt"
運行命令的結果是:
package: `tizen package -t wgt --sign $npm_package_config_tizen_profile -- .buildResult/wgt -o .buildResult/wgt "myprofile"`
應該在哪里:
package: `tizen package -t wgt --sign "myprofile"_tizen_profile -- .buildResult/wgt -o .buildResult/wgt`
就像npm只是將cmd line參數附加到腳本命令,而不是像docs中所述的變量一樣將其插入: https : //docs.npmjs.com/misc/config
是否有npm的最近更新,它已棄用並刪除了此功能? 我剛剛更新到npm 6.x,但在5.x上也是如此。
您可以嘗試在沒有--sign
標志的情況下在package.json
重寫腳本,例如:
"package": "tizen package -t wgt -- .buildResult/wgt -o .buildResult/wgt"
然后在運行npm命令時將其傳遞:
npm run package -- --sign myprofile
我假設您可以更改參數的順序,因為--sign myprofile
現在將在命令的最后
更新
這是傳遞變量並將其放置在CLI命令中任何位置的另一種方法(不使用npm config set
)。 在我的package.json
:
"aaa": "ls $myoptionalflag && $mycmd"
這樣,我可以將任何標志傳遞給la
命令(或根本不傳遞),並且可以將任何CLI命令作為mycmd
變量傳遞。 因此,現在我可以運行:
myoptionalflag=-la mycmd=pwd npm run aaa
將執行
ls -la && pwd
要么
mycmd=pwd npm run aaa
將執行
ls && pwd
我想到了!
該文檔有缺陷,因為它沒有告訴您傳遞npm config屬性的正確語法。 我不得不使用:
npm run package --mypackagename:tizen_profile="myprofile"
其中mypackagename是package.json中使用的name屬性。 還要注意,鍵值語法是--key=value
而不是文檔中介紹的--key value
。 同樣,-- --key
將是packagename:key,使用在package.json
頂層指定的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.