跳至主要內容

執行任務

單一儲存庫可以包含數百甚至數千個專案,因此能夠針對所有(或部份)執行 npm 腳本,是 Lerna 等工具的一項重要功能。

定義

  • 指令 - 任何開發人員輸入終端的內容(例如,lerna run build --scope=header --concurrency=5)。
  • 目標 - npm 腳本名稱(例如,build
  • 任務 - 呼叫 npm 腳本(例如,header:build)。

範例儲存庫

範例基於 此儲存庫,請隨時複製並加以使用。

執行所有項目

每個專案都有定義的 testbuild腳本。

執行

npx lerna run build

這會按正確順序建立專案:footerheader,然後是 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