W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
從本地或遠(yuǎn)程 npm 包運(yùn)行命令
npm exec -- <pkg>[@<version>] [args...]
npm exec --package=<pkg>[@<version>] -- <cmd> [args...]
npm exec -c '<cmd> [args...]'
npm exec --package=foo -c '<cmd> [args...]'
npm exec [--ws] [-w <workspace-name] [args...]
npx <pkg>[@<specifier>] [args...]
npx -p <pkg>[@<specifier>] <cmd> [args...]
npx -c '<cmd> [args...]'
npx -p <pkg>[@<specifier>] -c '<cmd> [args...]'
Run without --call or positional args to open interactive subshell
alias: npm x, npx
common options:
--package=<pkg> (may be specified multiple times)
-p is a shorthand for --package only when using npx executable
-c <cmd> --call=<cmd> (may not be mixed with positional arguments)
此命令允許你在與通過npm run
.
不帶位置參數(shù)或 運(yùn)行--call
,這允許你在運(yùn)行package.json
腳本的同一類 shell 環(huán)境中以交互方式運(yùn)行命令?。當(dāng)標(biāo)準(zhǔn)輸入是 TTY 時,CI 環(huán)境中不支持交互模式,以防止掛起。
--package
選項(xiàng)指定的任何包都將PATH
在執(zhí)行的命令中提供,以及任何本地安裝的包可執(zhí)行文件。--package
可以多次指定該選項(xiàng),以在所有指定包都可用的環(huán)境中執(zhí)行提供的命令。
如果本地項(xiàng)目依賴項(xiàng)中不存在任何請求的包,則將它們安裝到 npm 緩存中的文件夾中,該文件夾將添加到PATH
執(zhí)行過程中的環(huán)境變量中。將打印提示(可以通過提供--yes
或--no
來抑制)。
不帶說明符的包名將與本地項(xiàng)目中存在的任何版本匹配。如果帶有說明符的包名稱與本地依賴項(xiàng)具有完全相同的名稱和版本,則它們才會被視為匹配項(xiàng)。
如果沒有提供-c
或--call
選項(xiàng),則使用位置參數(shù)來生成命令字符串。如果--package
未提供任何選項(xiàng),則 npm 將嘗試根據(jù)以下啟發(fā)式從作為第一個位置參數(shù)提供的包說明符中確定可執(zhí)行文件名稱:
package.json
中的bin
字段中只有一個條目,或者如果所有條目都是同一命令的別名,則將使用該命令。bin
條目,并且其中一個與name
字段的無作用域部分匹配,則將使用該命令。
如果這不會導(dǎo)致只有一個選項(xiàng)(因?yàn)闆]有 bin 條目,或者它們都不匹配name
包的 ),則?npm exec
退出并出現(xiàn)錯誤。
要運(yùn)行指定二進(jìn)制文件以外的二進(jìn)制文件,請指定一個或多個--package
選項(xiàng),這將阻止 npm 從第一個命令參數(shù)推斷包。
當(dāng)通過npx
二進(jìn)制運(yùn)行時,所有標(biāo)志和選項(xiàng)必須在任何位置參數(shù)之前設(shè)置。當(dāng)運(yùn)行 via 時npm exec
,--
?可以使用雙連字符標(biāo)志來抑制 npm 對應(yīng)該發(fā)送到執(zhí)行命令的開關(guān)和選項(xiàng)的解析。
例如:
$ npx foo@latest bar --package=@npmcli/foo
在這種情況下,npm 將解析foo
包名稱,并運(yùn)行以下命令:
$ foo bar --package=@npmcli/foo
由于--package
選項(xiàng)來之后的位置參數(shù),它被視為一個參數(shù)傳遞給執(zhí)行命令。
相比之下,由于 npm 的參數(shù)解析邏輯,運(yùn)行這個命令是不同的:
$ npm exec foo@latest bar --package=@npmcli/foo
在這種情況下,npm 將--package
首先解析選項(xiàng),解析?@npmcli/foo
包。然后,它將在該上下文中執(zhí)行以下命令:
$ foo@latest bar
建議使用雙連字符來明確告訴 npm 停止解析命令行選項(xiàng)和開關(guān)。因此,以下命令等效于npx
上面的命令:
$ npm exec -- foo@latest bar --package=@npmcli/foo
String
(可多次設(shè)置)
要為npm exec
安裝的軟件包
""
String
npm exec、npx的可選配套選項(xiàng),允許指定自定義命令與已安裝的軟件包一起運(yùn)行。
npm exec --package yo --package generator-node --call "yo node"
String
(可多次設(shè)置)允許在當(dāng)前項(xiàng)目的已配置工作區(qū)的上下文中運(yùn)行命令,同時通過僅運(yùn)行此配置選項(xiàng)定義的工作區(qū)進(jìn)行過濾。
workspace
配置的有效值為:
為npm init
命令設(shè)置時,可以將其設(shè)置為尚不存在的工作區(qū)的文件夾,以創(chuàng)建該文件夾并將其設(shè)置為項(xiàng)目中的全新工作區(qū)。
此值不會導(dǎo)出到子進(jìn)程的環(huán)境中。
false
Boolean
啟用在所有已配置工作區(qū)的上下文中運(yùn)行命令。
此值不會導(dǎo)出到子進(jìn)程的環(huán)境中。
tap
使用提供的參數(shù)運(yùn)行本地依賴項(xiàng)中的版本:
$ npm exec -- tap --bail test/foo.js
$ npx tap --bail test/foo.js
通過指定選項(xiàng)運(yùn)行名稱與包名稱匹配的命令以外的命令--package
:
$ npm exec --package=foo -- bar --bar-argument
## ~ 或 ~
$ npx --package=foo bar --bar-argument
在當(dāng)前項(xiàng)目的上下文中運(yùn)行任意 shell 腳本:
$ npm exec -- tap --bail test/foo.js
$ npx tap --bail test/foo.js
你可以使用workspace
或workspaces
configs 在指定工作區(qū)的上下文中從 npm 包(本地安裝或遠(yuǎn)程獲?。┻\(yùn)行任意命令。如果沒有提供位置參數(shù)或--call
選項(xiàng),它將在這些配置的工作區(qū)中的每一個的上下文中一次打開一個交互式子shell。
給定一個配置了工作區(qū)的項(xiàng)目,例如:
.
+-- package.json
`-- 包
+-- 一個
| `--package.json
+-- b
| `--package.json
`--c
`--package.json
假設(shè)在根級別package.json
文件中正確設(shè)置了工作區(qū)配置?。例如:
{
“工作區(qū)”:[“./packages/*”]
}
使用workspaces
配置選項(xiàng)時,你可以在每個已配置工作區(qū)的上下文中從包中執(zhí)行任意命令,在此示例中,我們使用eslint來 lint 在每個工作區(qū)文件夾中找到的任何 js 文件:
npm exec --ws -- eslint ./*.js
還可以使用workspace
配置以及名稱或目錄路徑在單個工作區(qū)中執(zhí)行命令?:
npm exec --workspace=a -- eslint ./*.js
該workspace
配置還可以以運(yùn)行在多個工作區(qū)的背景下,特定的腳本中指定多次。workspace
在命令行中為配置定義值時,也可以-w
用作簡寫,例如:
npm exec -wa -wb -- eslint ./*.js
最后一條命令將eslint
在./packages/a
和?./packages/b
文件夾中運(yùn)行該命令。
該npx
二進(jìn)制文件重寫NPM 7.0.0,以及獨(dú)立的npx
?包當(dāng)時棄用。?npx
使用該npm exec
?命令而不是單獨(dú)的參數(shù)解析器和安裝過程,具有一些可供性以保持與它在以前版本中接受的參數(shù)的向后兼容性。
這導(dǎo)致其功能發(fā)生了一些變化:
npm
可以提供任何配置值。npx
在安裝任何內(nèi)容之前進(jìn)行提示。使用-y
或--yes
選項(xiàng)取消此提示。--no-install
選項(xiàng)已棄用,將轉(zhuǎn)換為--no
.外殼回退功能被刪除,因?yàn)樗遣豢扇〉摹?/li>
-p
參數(shù)是--parseable
in npm的簡寫,但是 in npx 的簡寫--package
。這是維護(hù)的,但僅適用于npx
?可執(zhí)行文件。--ignore-existing
選項(xiàng)已刪除。本地安裝的 bin 始終存在于執(zhí)行的進(jìn)程中PATH
。--npm
選項(xiàng)已刪除。?npx
將始終使用npm
它附帶的。--node-arg
和-n
選項(xiàng)都被刪除。--always-spawn
選項(xiàng)是多余的,因此被刪除。--shell
選項(xiàng)被替換為--script-shell
,但保留在npx
可執(zhí)行文件中以實(shí)現(xiàn)向后兼容性。npm cli 在使用指定的包名稱時利用其內(nèi)部包緩存。你可以使用以下內(nèi)容來更改 cli 使用此緩存的方式和時間。有關(guān)npm cache
緩存如何工作的更多信息,請參閱。
強(qiáng)制對包進(jìn)行陳舊性檢查,使 cli 立即查找更新,即使包已經(jīng)在緩存中。
繞過包的陳舊檢查。仍然會從服務(wù)器請求丟失的數(shù)據(jù)。要強(qiáng)制完全離線模式,請使用offline
.
強(qiáng)制完全離線模式。任何未在本地緩存的包都會導(dǎo)致錯誤。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: