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
。當 --continue
為 true
時,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 | 僅允許已宣告的變數 |
PATH
、SHELL
和SYSTEMROOT
始終對所有任務可用。
infer
在推論模式中,Turborepo會尋找每個任務設定的passThroughEnv
,以及turbo.json
設定根目錄中的globalPassThroughEnv
。如果任一設定已定義,則推論為「嚴格」模式。如果兩者都未定義,則推論為寬鬆
模式。
在此模式中,globalPassThroughEnv
的值和標記的值(「infer」)僅會在設定globalPassThroughEnv
時,才會納入全域雜湊。
loose
在寬鬆模式中,所有環境變數都可供任務使用。標記的值(「loose」)本身會納入全域雜湊。
strict
在嚴格模式中,只有在下列金鑰中指定的環境變數可供任務使用
- 每個任務設定中的
env
和passThroughEnv
globalEnv
和globalPassThroughEnv
在設定檔的根目錄
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
已知錯誤:目前會將所有可能的管線任務節點加入圖形,即使該管線任務實際上並不存在於特定工作區中。這不會影響執行,表示
- 終端機輸出可能會誇大任務執行的工作區數量
- 點狀圖形可能包含代表不存在任務的節點。
--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 中執行,並在該環境中將日誌分組,同時在其他環境中串流傳輸。
選項 | 說明 |
---|---|
auto | Turbo 根據其自己的啟發法決定 |
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 日誌)。
選項 | 說明 |
---|---|
auto | Turbo 根據其自己的啟發法決定 |
none | 無前綴 |
prefix | 強制將前綴置於日誌之前 |
--log-prefix=none
turbo run dev --log-prefix=none
--no-cache
預設 false
。請勿快取任務結果。這對於像 next dev
或 react-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
。限制執行,僅包含指定的任務。這與 lerna
和 pnpm
預設執行任務的方式非常類似。
在 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 如何詮釋
inputs
和outputs
的 glob 語法 - 兩次任務執行之間有哪些輸入已變更,導致快取命中或未命中
- 任務時間如何隨著時間推移而變更
--token
遠端快取的持有者權杖。與 --team
旗標結合使用時,對於在非互動式外殼(例如 CI/CD)中執行很有用。
turbo run build --team=my-team --token=xxxxxxxxxxxxxxxxx
您也可以透過設定名為 TURBO_TOKEN
的環境變數來設定目前權杖的值。如果兩個都存在,旗標將優先於環境變數。
如果您在 Vercel 上使用遠端快取,並在 Vercel 上建置您的專案,則不需要這個環境變數和旗標,因為它們會自動為您設定。假設您在 Vercel 上使用遠端快取,但在其他 CI 提供者(例如 CircleCI 或 GitHub Actions)中建置。您可以使用 Vercel 個人存取權杖作為您的 --token
或 TURBO_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
會新增任何工作空間,而工作空間在目前的執行中依賴(例如在 dependencies
或 devDependencies
中宣告)。
這在 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 heavy
或 sandwich
檢視模式。
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>"