返回部落格

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 帶來了一個新的程式碼庫查詢命令,以及其他改進,包括

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

查詢您的程式碼庫 實驗性

在 Turborepo 2.2 中,我們引入了 turbo query — 一個新的命令,允許針對 Turborepo 的程式碼庫資料執行 GraphQL 查詢。Turborepo 會計算大量關於您程式碼庫的資料,以便以最高的效率執行您的任務。這包括您的套件依賴關係圖、變更的套件、任務依賴關係、任務的日誌輸出等等。這些資料對於腳本編寫、重構、確定在 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,例如執行摘要模擬執行ls。但是,這些 API 有一些限制。首先,它們以單次執行為中心,而不是一般的程式碼庫資訊。其次,隨著我們新增更多欄位,輸出很快就變得非常龐大。我們需要一種以與執行無關的方式查詢程式碼庫資料,並使傳回的資料更具可自訂性。

我們要感謝 @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 成為您首選的建置工具。