Turborepo 2.2

2024 年 10 月 18 日,星期五
Tom Knickman
姓名
Tom Knickman
X
@tknickman
Anthony Shew
姓名
Anthony Shew
X
@anthonysheww
Chris Olszewski
姓名
Chris Olszewski
Nicholas Yang
姓名
Nicholas Yang
X
@nicholaslyang
Dimitri Mitropoulos
姓名
Dimitri Mitropoulos

Turborepo 2.2 帶來了新的 repository query 命令,以及其他改進,包括

立即執行 npx @turbo/codemod migrate 以更新,或使用 npx create-turbo@latest 開始使用。

查詢您的 repository 實驗性功能

在 Turborepo 2.2 中,我們推出了 turbo query——一個新的命令,允許針對 Turborepo 的 repository 資料執行 GraphQL 查詢。Turborepo 計算關於您的 repository 的大量資料,以便以最高的效率執行您的任務。這包括您的套件依賴圖、已變更的套件、任務依賴性、來自您任務的日誌輸出等等。這些資料對於腳本編寫、重構、確定在 CI 中要執行的內容以及發現關於您的程式碼庫的其他見解非常有用。

若要開始使用,請執行 turbo query 以開啟 GraphiQL——一個用於編寫 GraphQL 查詢的本機 IDE,支援互動式架構探索、文件和傳送查詢。

您也可以直接將查詢作為字串或檔案路徑傳遞

終端機
turbo query "query { package(name: \"web\") { name } }"
turbo query query.gql

範例

取得所有具有 test 任務的 受影響套件的名稱和路徑。

affected-packages.gql
{
  affectedPackages(
    base: "main"
    head: "HEAD"
    filter: { has: { field: TASK_NAME, value: "test" } }
  ) {
    items {
      name
      path
    }
  }
}

取得特定套件及其直接依賴項。

direct-dependencies.gql
query {
  package(name: "cli") {
    directDependencies {
      name
    }
  }
}

尋找所有具有超過 10 個直接依賴項的套件。

filter.gql
query {
  packages(
    filter: { greaterThan: { field: DIRECT_DEPENDENT_COUNT, value: 10 } }
  ) {
    name
  }
}

Turborepo 過去已為結構化資料新增 API,例如 run summariesdry runls。但是,這些 API 有一些限制。首先,它們以單次執行為中心,而不是一般的 repository 資訊。其次,隨著我們新增更多欄位,輸出很快變得非常龐大。我們需要一種以與執行無關的方式查詢 repository 資料的方法,並使傳回的資料更可自訂。

我們要感謝 @maschwenk@rafaeltab@weyert 對此功能提供的早期回饋。

若要瞭解更多資訊,請造訪文件,並在 turbo query RFC 上留下對此新實驗性命令的回饋。

改進的快取安全性

快取任務是 Turborepo 最強大的功能之一,僅重新執行已變更的內容即可加速建置和其他任務。透過 Turborepo 2.2,我們發布了一些改進,以協助配置快取輸入和輸出,並在情況看起來不太正確時向您發出警告。

平台環境變數

當部署您的應用程式時,您可能已經在生產環境中配置了環境變數。現在,對於支援的平台,Turborepo 將自動檢查這些環境變數與您的 turbo.json 配置,以確保您已正確地 將它們納入考量,並將警告您任何遺失的環境變數。

任何平台都可以透過在建置環境中實作 TURBO_PLATFORM_ENV 環境變數來支援此功能。

Vercel 今天已獲得支援,隨著更多平台可用,我們將更新文件。

深入瞭解平台環境變數

空快取配置的警告

當執行任務時,如果任務配置為快取空目錄,Turborepo 現在將警告您。這可能是一個常見的錯誤,並可能導致意外的建置中斷。這在 2.2 中預設為啟用。

深入瞭解配置輸出

eslint-config-turbo 的改進

Turborepo 會自動為 常見框架 的 env 鍵新增前綴萬用字元。如果您正在使用其中一個支援的框架,則無需指定以框架前綴開頭的環境變數。

現在在 Turborepo 2.2 中,eslint-config-turbo 也支援此功能,確保來自外掛程式的警告是準確且可操作的。

深入瞭解eslint-config-turbo

使用 --affected 進行零配置比較

在 Turborepo 2.1 中,我們發布了 --affected 旗標,該旗標可以與 turbo runturbo ls 一起使用,以自動鎖定變更的套件。在 2.2 中,我們更進一步,在 GitHub 工作流程中執行 --affected 時引入自動比較——使常見用例更加智慧。

深入瞭解--affected

社群

自發布 Turborepo 2.1 以來,我們看到了驚人的採用率和社群成長

Turborepo 是所有貢獻者(包括我們的核心團隊)共同努力的成果。

檢視完整的變更日誌

感謝您持續的支持、回饋和協作,使 Turborepo 成為您首選的建置工具。