Turborepo logo

多語言支援

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

舉例來說,您的儲存庫中可能有一個 Rust 專案位於 ./cli 目錄中。 若要將此目錄作為套件新增至 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 執行的任務中。

快取建置產物

確保您的建置輸出透過 outputs 鍵turbo.json 中進行快取。 以使用 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 應用程式。

小時

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

本頁內容