Turborepo

了解您的儲存庫

Turborepo 包含了解您儲存庫結構的工具,可以幫助您使用和優化程式碼。

turbo ls

要列出您的套件,您可以執行 turbo ls。這將顯示您儲存庫中的套件及其位置。

終端機
> turbo ls
turbo 2.1.3
 
 WARNING  ls command is experimental and may change in the future
5 packages (pnpm9)
 
  @repo/eslint-config packages/eslint-config
  @repo/typescript-config packages/typescript-config
  @repo/ui packages/ui
  docs apps/docs
  web apps/web

您可以像 run 一樣套用篩選器ls

終端機
> turbo ls --filter ...ui
3 packages (pnpm9)
 
  @repo/ui packages/ui
  docs apps/docs
  web apps/web

turbo run

若要確定在您的多儲存庫中可以執行哪些任務,只需呼叫 turbo run 而不使用任何任務。您將獲得任務清單以及定義這些任務的套件。

終端機
> turbo run
No tasks provided, here are some potential ones
 
  lint
    @repo/ui, docs, web
  build
    docs, web
  dev
    docs, web
  start
    docs, web
  generate:component
    @repo/ui

turbo query

如果您想深入了解您的儲存庫結構,自 2.2.0 版本起,Turbo 通過 turbo query 提供了一個存取您儲存庫的 GraphQL 介面。您可以執行查詢,例如尋找所有具有 test 任務的套件。

終端機
> turbo query "query { packages(filter: { has: { field: TASK_NAME, value: \"build\"}}) { items { name } } }"
{
  "data": {
    "packages": {
      "items": [
        {
          "name": "//"
        },
        {
          "name": "docs"
        },
        {
          "name": "web"
        }
      ]
    }
  }
}

這對於診斷您的套件或任務相依性圖中的潛在問題很有幫助。例如,假設您在建置過程中遇到許多快取未命中。這可能是因為有一個套件不斷被更改並在您的程式碼庫中被導入。

為此,我們可以執行查詢,以找到在您的多儲存庫中直接被導入超過 10 次的套件。

終端機
> turbo query "query { packages(filter: { greaterThan: { field: DIRECT_DEPENDENT_COUNT, value: 10 } }) { items { name } } }"
{
  "data": {
    "packages": {
      "items": [
        {
          "name": "utils"
        }
      ]
    }
  }
}

現在我們已經找到這個套件,我們可以嘗試將其拆分成更小的套件,這樣一個小的更改就不會使整個相依性圖失效。

或者,假設您正在使用我們新的 --affected 標誌,但您仍然執行的任務比您想要的還要多。透過 turbo query,您可以找到所有套件以及它們失效的原因。

終端機
> turbo query "query { affectedPackages(base: \"HEAD^\", head: \"HEAD\") { items { reason {  __typename } } } }"
{
  "data": {
    "affectedPackages": {
      "items": [
        {
          "name": "utils",
          "reason": {
            "__typename": "FileChanged"
          }
        },
        {
          "name": "web",
          "reason": {
            "__typename": "DependencyChanged"
          }
        },
        {
          "name": "docs",
          "reason": {
            "__typename": "DependencyChanged"
          }
        },
        {
          "name": "cli",
          "reason": {
            "__typename": "DependencyChanged"
          }
        },
      ]
    }
  }
}

小時

節省的總運算時間
開始使用
遠端快取 →

本頁內容