簡體   English   中英

為什么npm直接將cmd行標志傳遞給我的腳本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM