儲存庫
文件
API 參考
run

turbo run <task>

在指定範圍內的所有工作空間中執行 npm 腳本。任務必須在 pipeline 組態中指定。

turbo run <task1> <task2> [options] [-- <args passed to task1 and task2>]

turbo 可以執行多個任務,任何後接 -- 的引數都將傳遞給要執行的任務。請注意,這些額外的引數不會傳遞給任何由於 pipeline 組態中的相依關係而執行的其他任務。

選項

--cache-dir

類型:字串

預設為 ./node_modules/.cache/turbo。指定本機檔案系統快取目錄。如果您將其從預設值變更,請務必將此資料夾新增至您的 .gitignore

turbo run build --cache-dir="./my-cache"

也可以透過 TURBO_CACHE_DIR=./my-cache 環境變數設定相同的行為。

--concurrency

類型:數字 | 字串

預設為 10。設定/限制任務執行的最大並行度。這必須是大於或等於 1 的整數,或百分比值,例如 50%。使用 1 來強制串列(即一次一個任務)執行。使用 100% 來使用所有可用的邏輯處理器。如果同時傳遞 --parallel 旗標,則會忽略此選項。

turbo run build --concurrency=50%
turbo run test --concurrency=1

--continue

預設為 false。此旗標會告訴 turbo 是否繼續執行,即使遇到錯誤(例如,任務的非零退出碼)。預設情況下,指定 --parallel 旗標會自動將 --continue 設定為 true,除非明確設定為 false。當 --continuetrue 時,turbo 會在執行期間遇到最高退出碼值時退出。

turbo run build --continue

--cwd

設定命令的工作目錄。

turbo run build --cwd=./somewhere/else

--dry / --dry-run

顯示受影響工作區和將執行的任務的詳細資料,而不是執行任務。指定 --dry=json 以 JSON 格式取得輸出。

任務詳細資料包括

  • task:要執行的任務名稱
  • package:執行任務的工作區
  • hash:任務的雜湊,用於快取
  • directory:執行任務的目錄
  • command:用於執行任務的實際指令
  • outputs:將快取的任務輸出的位置
  • logFile:任務執行的日誌檔案位置
  • dependencies:必須在這個任務之前執行的任務
  • dependents:必須在這個任務之後執行的任務

--env-mode

類型:字串

控制任務可用的環境變數。

選項說明
infer根據允許清單設定推論嚴格模式或寬鬆模式
loose允許所有環境變數
strict僅允許已宣告的變數

PATHSHELLSYSTEMROOT始終對所有任務可用。

infer

在推論模式中,Turborepo會尋找每個任務設定的passThroughEnv,以及turbo.json設定根目錄中的globalPassThroughEnv。如果任一設定已定義,則推論為「嚴格」模式。如果兩者都未定義,則推論為寬鬆模式。

在此模式中,globalPassThroughEnv的值和標記的值(「infer」)僅會在設定globalPassThroughEnv時,才會納入全域雜湊。

loose

在寬鬆模式中,所有環境變數都可供任務使用。標記的值(「loose」)本身會納入全域雜湊。

strict

在嚴格模式中,只有在下列金鑰中指定的環境變數可供任務使用

  • 每個任務設定中的envpassThroughEnv
  • globalEnvglobalPassThroughEnv 在設定檔的根目錄

globalPassThroughEnv 的值和標記值(「嚴格」)本身會納入全域雜湊。

如果指定或推論出嚴格模式,所有任務都會在嚴格模式下執行,不論其設定為何。

--filter

類型:字串陣列

指定工作區、目錄和 git commit 的組合,做為執行的進入點。

可以結合多個篩選器來選擇不同的目標組。此外,篩選器也可以排除目標。符合任何篩選器且未明確排除的目標,將會出現在最後的進入點選擇中。換句話說,最後的目標清單是提供的所有篩選器相符目標的聯集,減去已排除目標的聯集。

有關 --filter 標記和篩選的更詳細資訊,請參閱我們的說明文件中的 專屬頁面

turbo run build --filter=my-pkg
turbo run test --filter=...^@scope/my-lib
turbo run build --filter=./apps/* --filter=!./apps/admin

--graph

此指令會產生目前的任務圖形之 svg、png、jpg、pdf、json、html 或 其他支援的輸出格式(在新分頁中開啟)。輸出檔案格式預設為 jpg,但可以透過指定檔名副檔名來控制。

如果未安裝 Graphviz 或未提供檔名,此指令會將點狀圖形列印到 stdout

turbo run build --graph
turbo run build test lint --graph=my-graph.svg
turbo run build test lint --graph=my-json-graph.json
turbo run build test lint --graph=my-graph.pdf
turbo run build test lint --graph=my-graph.png
turbo run build test lint --graph=my-graph.html
turbo run build test lint --graph=my-graph.mermaid

已知錯誤:目前會將所有可能的管線任務節點加入圖形,即使該管線任務實際上並不存在於特定工作區中。這不會影響執行,表示

  1. 終端機輸出可能會誇大任務執行的工作區數量
  2. 點狀圖形可能包含代表不存在任務的節點。

--force

忽略現有的快取人工製品,並強制重新執行所有任務(覆寫重疊的人工製品)

turbo run build --force

相同的行為也可以透過 TURBO_FORCE=true 環境變數設定。

--global-deps

指定要雜湊的全局檔案系統相依性的 glob。對於會影響多個套件/應用程式的根目錄中的 .env 和檔案很有用。可以指定多次。

turbo run build --global-deps=".env.*" --global-deps=".eslintrc" --global-deps="jest.config.js"

您也可以在 turbo 設定中指定這些,作為 globalDependencies 鍵。

--framework-inference

類型:布林

指定是否對任務執行架構推論。預設為 true,可以設定為 false,這會略過任務的架構推論。這會停用 自動環境變數包含

turbo run build --framework-inference=false

--ignore

類型:字串陣列

忽略檔案或目錄對範圍的影響。在幕後使用 glob 模式。

turbo run build --ignore="apps/**/*"
turbo run build --ignore="packages/**/*"
turbo run build --ignore="packages/**/*" --ignore="\!/packages/not-this-one/**/*"

多個模式的運作方式

正向模式(例如 foo*)會新增至結果,而反向模式(例如 !foo)會從結果中減去。

因此,單獨的否定(例如 ['!foo'])永遠不會比對到任何東西 – 請改用 ['*', '!foo']

Glob 模式

僅為快速概覽。

  • * 比對任意數量的字元,但不會比對 /
  • ? 比對單一字元,但不會比對 /
  • ** 比對任意數量的字元,包括 /,只要它是路徑部分中唯一的項目
  • {} 允許使用逗號分隔的「或」運算式清單
  • ! 在模式的開頭會否定比對

--log-order

類型:字串

設定任務輸出順序類型。預設為「auto」,讓 turbo 偵測是否在 CI 中執行,並在該環境中將日誌分組,同時在其他環境中串流傳輸。

選項說明
autoTurbo 根據其自己的啟發法決定
stream在輸出可用時立即顯示
grouped依任務顯示分組輸出

範例

turbo run build --log-order=stream
turbo run build --log-order=grouped

如果日誌順序設定為 auto,且 turbo 偵測到在 GitHub Actions 上執行,則 turbo 會建立 分組日誌(在新分頁中開啟)。您可以透過設定自己的日誌順序,選擇不採用此行為。

--log-prefix

類型:字串

這會控制 <package>:<task>: 前綴,用於執行任務時產生的日誌列(在執行和從快取中重播時)。這也適用於「單一套件」儲存庫,其中前綴只會是 <task>:。執行多個平行任務時的日誌輸出會交錯,因此如果省略前綴,則必須使用另一種方法來確定哪個任務記錄該列(例如豐富的 JSON 日誌)。

選項說明
autoTurbo 根據其自己的啟發法決定
none無前綴
prefix強制將前綴置於日誌之前
--log-prefix=none
turbo run dev --log-prefix=none

--no-cache

預設 false。請勿快取任務結果。這對於像 next devreact-scripts start 這樣的監控指令很有用。

turbo run build --no-cache
turbo run dev --no-cache

--no-daemon

預設 false。在某些情況下,turbo 可以執行獨立程序,以預先計算用於判斷需要完成哪些工作的數值。這個獨立程序(守護程序)是一種最佳化,並非 turbo 正常運作的必要條件。傳遞 --no-daemon 指示 turbo 避免使用或建立獨立程序。

--output-logs

類型:字串

設定輸出記錄類型。如果在 turbo.json 中定義,這將覆寫 outputMode

選項說明
full顯示所有輸出(預設)
hash-only僅顯示任務的雜湊
new-only僅顯示快取未命中的輸出
errors-only僅顯示任務失敗的輸出
none隱藏所有任務輸出

範例

turbo run build --output-logs=full
turbo run build --output-logs=new-only
turbo run build --output-logs=errors-only
turbo run build --output-logs=none

--only

預設 false。限制執行,僅包含指定的任務。這與 lernapnpm 預設執行任務的方式非常類似。

turbo.json 中提供此管線

{
  "$schema": "https://turbo.dev.org.tw/schema.json",
  "pipeline": {
    "build": {
      "dependsOn": ["^build"]
    },
    "test": {
      "dependsOn": ["^build"]
    }
  }
}
turbo run test --only

執行每個工作區中的 test 任務。它不會 build

--parallel

預設 false。跨工作區並行執行命令,並忽略任務相依圖。

通常會將 --parallel 旗標用於「開發」或 --watch 模式任務,這些任務不會結束。從 turbo@1.7 開始,我們建議使用 persistent 設定檔來設定這些任務。

turbo run lint --parallel --no-cache
turbo run dev --parallel --no-cache

--profile

產生 Chrome Tracing 格式的執行追蹤,可供您用於分析效能。可以在 Perfetto(在新分頁中開啟) 中檢視剖析。

turbo run build --profile=profile.json

--remote-cache-timeout

預設 30 秒。設定遠端快取作業的逾時時間(單位為秒)。

turbo run build --remote-cache-timeout=60

--remote-only

預設 false。忽略所有工作的所有本地檔案系統快取。只允許使用遠端快取讀取和快取人工製品。

turbo run build --remote-only

也可以透過 TURBO_REMOTE_ONLY=true 環境變數設定相同的行為。

--summarize

.turbo/runs 中產生一個 JSON 檔案,其中包含執行相關的元資料,包括受影響的工作區、執行的任務(包括其時間和雜湊值)、根據您的設定擴充到快取金鑰,以及快取人工製品中包含的所有檔案。此旗標有助於判斷下列事項:

  • Turbo 如何詮釋 inputsoutputs 的 glob 語法
  • 兩次任務執行之間有哪些輸入已變更,導致快取命中或未命中
  • 任務時間如何隨著時間推移而變更

--token

遠端快取的持有者權杖。與 --team 旗標結合使用時,對於在非互動式外殼(例如 CI/CD)中執行很有用。

turbo run build --team=my-team --token=xxxxxxxxxxxxxxxxx

您也可以透過設定名為 TURBO_TOKEN 的環境變數來設定目前權杖的值。如果兩個都存在,旗標將優先於環境變數。

如果您在 Vercel 上使用遠端快取,並在 Vercel 上建置您的專案,則不需要這個環境變數和旗標,因為它們會自動為您設定。假設您在 Vercel 上使用遠端快取,但在其他 CI 提供者(例如 CircleCI 或 GitHub Actions)中建置。您可以使用 Vercel 個人存取權杖作為您的 --tokenTURBO_TOKEN。如果您使用自訂遠端快取,此值將用於在要求傳送至您的自訂遠端快取時傳送 HTTP 持有者權杖。

--team

遠端快取團隊的 slug。與 --token--team 旗標結合使用時,對於在非互動式外殼中執行很有用。

turbo run build --team=my-team
turbo run build --team=my-team --token=xxxxxxxxxxxxxxxxx

您也可以透過設定名為 TURBO_TEAM 的環境變數來設定目前團隊的值。如果兩個都存在,旗標將優先於環境變數。

--preflight

僅在已設定遠端成品快取時適用。啟用在每個快取成品和分析要求之前傳送預先要求。後續的上傳和下載將遵循重新導向。

turbo run build --preflight

相同的行為也可以透過 TURBO_PREFLIGHT=true 環境變數設定。

--verbosity

若要指定記錄層級,請使用 --verbosity=<num>-v, -vv, -vvv

  • 資訊 : --verbosity=1,或 -v
  • 偵錯: --verbosity=2,或 -vv
  • 追蹤: --verbosity=3,或 -vvv
turbo run build -v
turbo run build --verbosity=2
turbo run build -vvv

已棄用的選項

--cpuprofile

類型:字串

--cpuprofile 已在 1.11.x 中棄用。請改用 --profile

若要檢視 CPU 剖析,請將剖析輸出至指定檔案,並將檔案拖放到 speedscope(在新分頁中開啟)

重要事項:CPU 剖析器無法在 Linux 的 Windows 子系統中運作。剖析器必須建置為原生 Windows 並使用命令提示字元來執行。

turbo run build --cpuprofile="<cpu-profile-file-name>"

--include-dependencies

--include-dependencies 已在 1.2.x 中棄用。請改用 --filter

預設 false。當 true 時,turbo 會新增任何工作空間,而工作空間在目前的執行中依賴(例如在 dependenciesdevDependencies 中宣告)。

這在 CI 中使用 --filter 時很有用,因為它保證執行中需要的每個依賴項實際上都已執行。

--deps

--deps 已在 1.2.x 中棄用。請改用 --filter

預設為 true。將依賴的工作空間使用者包含在執行中。

turbo run build --deps
turbo run build --no-deps

範例

假設您有工作區 A、B、C 和 D,其中 A 取決於 B,而 C 取決於 D。您第一次執行 turbo run build,所有內容都已建置並快取。然後,您變更 B 中的一行程式碼。在啟用 --deps 旗標的情況下,執行 turbo run build 將在 B 中執行 build,然後在 A 中執行,但不會在 C 和 D 中執行,因為它們不受變更影響。如果您要執行 turbo run build --no-deps,Turbo 只會在 B 中執行 build

--heap

--heap 已在 1.2.x 中棄用。請改用 --profile

類型:字串

要檢視堆疊追蹤,請將追蹤輸出至指定檔案,使用 go tool pprof [file] 並輸入 top。您也可以將其拖放到 speedscope(在新分頁中開啟) 並使用 left heavysandwich 檢視模式。

turbo run build --heap="<heap-file-name>"

--scope

--scope 已在 1.2.x 中不建議使用。請改用 --filter

類型:字串陣列

指定/篩選工作區作為執行進入點。針對 package.json name 欄位(而非檔案系統)的 Glob。

turbo run lint --scope="@example/**"
turbo run dev --scope="@example/a" --scope="@example/b" --no-cache --no-deps

--since

--since 已在 1.2.x 中不建議使用,請改用 --filter

根據自合併基準以來已變更的工作區來篩選執行。

turbo run build --since=origin/main

重要事項:這使用 git diff ${target_branch}... 機制來識別哪些工作區已變更。假設工作區的所有輸入檔案都存在於其各自的工作區資料夾內。

--trace

--trace 已在 1.11.x 中棄用,請改用 --profile

類型:字串

若要檢視 CPU 追蹤,請將追蹤輸出到指定檔案,請使用 go tool trace [file]

重要事項:追蹤檢視器不適用於 Linux 的 Windows 子系統。

turbo run build --trace="<trace-file-name>"