網站導覽
目錄
npm-run-script
選擇 CLI 版本
目錄
概要
npm run-script <command> [-- <args>]aliases: run, rum, urn
說明
這會從套件的 "scripts"
物件執行任意指令。如果未提供 "command"
,它將列出可用的指令碼。
run[-script]
由 test、start、restart 和 stop 指令使用,但也可以直接呼叫。當套件中的指令碼列印出來時,它們會被區分為生命週期 (test、start、restart) 和直接執行的指令碼。
任何位置引數都會傳遞給指定的指令碼。使用 --
傳遞 -
- 開頭的旗標和選項,否則這些旗標和選項會被 npm 分析。
例如
npm run test -- --grep="pattern"
參數只會傳遞給 npm run
之後指定的腳本,不會傳遞給任何 pre
或 post
腳本。
env
腳本是一個特殊的內建指令,可用於列出執行時腳本可用的環境變數。如果您的套件中定義了「env」指令,它將優先於內建指令。
除了 shell 已有的 PATH
之外, npm run
會將 node_modules/.bin
新增到提供給腳本的 PATH
中。任何由本機安裝的相依項提供的二進制檔案都可以使用,而不需要 node_modules/.bin
前綴。例如,如果您的套件中有一個 tap
的 devDependency
,您應該寫
"scripts": {"test": "tap test/*.js"}
而不是
"scripts": {"test": "node_modules/.bin/tap test/*.js"}
實際執行腳本的 shell 取決於平台。在類 Unix 系統上,預設為 /bin/sh
指令,在 Windows 上為 cmd.exe
。 /bin/sh
所引用的實際 shell 也取決於系統。您可以使用 script-shell
設定 自訂 shell。
腳本會從套件資料夾的根目錄執行,而不管在呼叫 npm run
時目前的作業目錄為何。如果您希望腳本根據您所在的子目錄使用不同的行為,您可以使用 INIT_CWD
環境變數,它會儲存您執行 npm run
時所在的完整路徑。
npm run
會將 NODE
環境變數設定為執行 npm
的 node
可執行檔。
如果您嘗試在沒有 node_modules
目錄的情況下執行腳本,並且失敗,您將會收到執行 npm install
的警告,以防您忘記執行。
工作區支援
您可以使用 workspace
或 workspaces
設定,以便在指定的工作空間中從套件的 "scripts"
物件執行任意指令。如果沒有提供 "command"
,它將列出這些設定工作空間中可用的腳本。
給定一個設定了工作空間的專案,例如
.+-- package.json`-- packages+-- a| `-- package.json+-- b| `-- package.json`-- c`-- package.json
假設工作空間設定已在根層級 package.json
檔案中正確設定。例如
{"workspaces": [ "./packages/*" ]}
且每個已設定的工作區都有一個已設定的 test
指令碼,我們可以使用 workspaces
設定 在所有工作區中執行測試
npm test --workspaces
過濾工作區
也可以使用 workspace
設定以及名稱或目錄路徑在單一工作區中執行指令碼
npm test --workspace=a
也可以多次指定 workspace
設定,以便在多個工作區的內容中執行特定指令碼。在命令列中為 workspace
設定定義值時,也可以使用 -w
作為簡寫,例如
npm test -w a -w b
這個最後的命令將在 ./packages/a
和 ./packages/b
套件中執行 test
。
設定
workspace
- 預設值
- 類型:字串(可以設定多次)
啟用在目前專案的已設定工作區內容中執行命令,同時透過僅執行此設定選項所定義的工作區來進行篩選。
workspace
設定的有效值為
- 工作區名稱
- 工作區目錄的路徑
- 父工作區目錄的路徑(將會選取該資料夾中的所有工作區)
當設定為 npm init
命令時,這可能會設定為尚未存在的資料夾,以建立資料夾並將其設定為專案中的全新工作區。
這個值不會匯出到子程式的環境中。
workspaces
- 預設值:null
- 類型:null 或布林值
設定為 true 以在所有已設定工作區的內容中執行命令。
明確將此設定為 false 將會導致 install
等命令完全忽略工作區。未明確設定時
- 在
node_modules
樹狀結構上執行的命令(安裝、更新等)會將工作區連結到node_modules
資料夾中。- 執行其他操作的命令(測試、執行、發布等)將在根專案上執行,除非 在workspace
設定中指定一個或多個工作區。
這個值不會匯出到子程式的環境中。
include-workspace-root
- 預設值:false
- 類型:布林值
在為命令啟用工作區時,包含工作區根目錄。
為 false 時,透過 workspace
設定指定個別工作區,或透過 workspaces
旗標指定所有工作區,將導致 npm 僅對指定的,而非根專案進行操作。
這個值不會匯出到子程式的環境中。
if-present
- 預設值:false
- 類型:布林值
為 true 時,當對 package.json
的 scripts
區段中未定義的腳本呼叫 run-script
時,npm 將不會以錯誤碼結束。此選項可用於在腳本存在時選擇性執行腳本,並在腳本失敗時失敗。這很有用,例如,在執行可能僅適用於其他通用 CI 設定中某些建置的腳本時。
這個值不會匯出到子程式的環境中。
ignore-scripts
- 預設值:false
- 類型:布林值
為 true 時,npm 不会執行在 package.json 檔案中指定的腳本。
請注意,明確用於執行特定腳本的命令,例如 npm start
、npm stop
、npm restart
、npm test
和 npm run-script
,如果設定 ignore-scripts
,仍會執行其預期的腳本,但它們不會執行任何前置或後置腳本。
foreground-scripts
- 預設值:
false
,除非使用npm pack
或npm publish
,其預設值為true
- 類型:布林值
在前景程序中執行所有建置腳本(即 preinstall
、install
和 postinstall
)腳本,與主 npm 程序共用標準輸入、輸出和錯誤。
請注意,這通常會使安裝執行速度變慢,而且會更吵,但對於除錯很有用。
script-shell
- 預設值:POSIX 系統上的 '/bin/sh',Windows 上的 'cmd.exe'
- 類型:null 或字串
用於執行 npm exec
、npm run
和 npm init <package-spec>
命令的腳本的殼層。