Turborepo

多語言支援

Turborepo 建構於 JavaScript 生態系的慣例之上,以尋找要執行的腳本和任務,但它並不關心這些腳本執行的內容。依照在 JavaScript 工作區中指定套件的指南,您可以將任何其他語言或工具鏈新增至 Turborepo。

例如,您可能在儲存庫的 ./cli 目錄中有一個 Rust 專案。要將此目錄作為套件新增到您的 JavaScript 套件管理員的工作區,請將該目錄新增至工作區定義

./package.json
{
  "workspaces": [
    "apps/*"
    "packages/*",
    "cli"
  ]
}
npm 工作區文件

然後,將一個 package.json 新增到該目錄

./cli/package.json
{
  "name": "@repo/rust-cli",
  "scripts": {
    "build": "cargo build --release"
  }
}

現在,當您使用 turbo build 時,./cli/package.json 中的 "build" 腳本將會包含在 turbo 執行的任務中。

快取建置產物

請確保您的建置輸出已透過 turbo.json 中的 outputs 鍵 快取。以使用 cargo 編譯的 Rust CLI 為例,發布版本將會在 target/release 目錄中建立,我們可以透過以下方式快取它

./turbo.json
{
  "tasks": {
    "build": {
      "outputs": ["target/release/**"] 
    }
  }
}

建立依賴關係

由於該目錄現在是套件管理員工作區的一部分,因此您可以像對 JavaScript 套件一樣建立依賴關係。

例如,如果您想確保先建置上述的 rust-cli「套件」,然後再建置您的 web 應用程式,請將它安裝到 web 應用程式的依賴項中

./web/package.json
{
  "devDependencies": {
+   "@repo/rust-cli": "*"
  }
}

假設 turbo.json 有一個類似以下的 build 任務

./turbo.json
{
  "tasks": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**", "target/release/**"]
    }
  }
}

turbo build 將會先建立 Rust CLI 的產物,然後再建置 web 應用程式。

小時

總計節省的計算資源
開始使用
遠程快取 →

本頁內容