執行任務
單一儲存庫可以包含數百甚至數千個專案,因此能夠針對所有(或部份)執行 npm 腳本,是 Lerna 等工具的一項重要功能。
定義
- 指令 - 任何開發人員輸入終端的內容(例如,
lerna run build --scope=header --concurrency=5
)。 - 目標 - npm 腳本名稱(例如,
build
) - 任務 - 呼叫 npm 腳本(例如,
header:build
)。
範例儲存庫
範例基於 此儲存庫,請隨時複製並加以使用。
執行所有項目
每個專案都有定義的 test
和 build
腳本。
執行
npx lerna run build
這會按正確順序建立專案:footer
和 header
,然後是 remixapp
。
終端輸出
✔ header:build (501ms)
✔ footer:build (503ms)
✔ remixapp:build (670ms)
—————————————————————————————————————————————————————————————————————————————
Lerna (powered by Nx) Successfully ran target build for 3 projects (1s)
請注意,Lerna 對於各個建置腳本的功能並不在意。build
這個名稱也不特別:它僅是 npm 腳本的名稱。
同時執行多項任務
您可以傳遞逗號分隔的目標清單,以觸發同時執行。
npx lerna run test,build,lint
例如,如果你的任務之間有相依性,例如,在特定套件上執行 build
之前,需要執行 test
,只要你已設定適當的任務管線設定,任務執行器便會為你協調工作。
為單一套件執行任務
開發過程中,你很少會執行所有建置或所有測試。相反的,你通常只針對你正在變更的專案執行工作。例如,你可以這樣執行 header
測試:
npx lerna run test --scope=header
執行受 PR 影響的任務
你也可以為 PR 中所有受影響的專案執行命令,如下所示:
npx lerna run test --since=origin/main
在此處深入了解。
控制任務的執行方式
若要更控制任務執行的順序,請編輯任務管線設定。
若要加快任務執行速度,請了解如何快取任務結果以及分派任務執行。
自動載入 .env 檔案
預設情況下,由 Nx 提供技術支援的現代任務執行器會自動為你載入 .env
檔案。如果你想在任何情況下停用此行為,你可以將 --load-env-files
設為 false。
如需有關預設載入哪些 .env
檔案的更多詳細資訊,請參閱:https://nx.dev/recipes/environment-variables/define-environment-variables