返回部落格

Turborepo 1.1

Jared Palmer
名稱
Jared Palmer
X
@jaredpalmer
Becca Z.
名稱
Becca Z.
X
@becca__z
Gaspar Garcia
名稱
Gaspar Garcia
X
@gaspargarcia_
Greg Soltis
名稱
Greg Soltis
X
@gsoltis

自從 12 月中旬發布 Turborepo v1.0 以來,我們看到了驚人的採用率

Weekly npm downloads of turbo

我們正在透過 Turborepo v1.1 進一步改善建置效能和快取,特色包括:

立即執行 npm install turbo@latest 來更新。執行 turbo 後,您將會看到關於如何使用 @turbo/codemod 來執行 v1.1 自動遷移的說明。

自動遷移

Turborepo 現在提供冪等的程式碼轉換和自動遷移腳本(又稱「codemod」),以協助您在功能已棄用或將來會棄用時升級 Turborepo 程式碼庫。

Codemod 是以程式方式在您的程式碼庫上執行的轉換。這可以自動對您的程式碼套用大量變更,省下您的時間,無需手動檢查和編輯每個檔案。

用法

終端機
npx @turbo/codemod <transform> <path>

如需特定轉換的詳細資訊,請查看新的 Codemods 文件

turbo.json 支援

Turborepo 設定現在定義在您單一程式碼庫根目錄下的 turbo.json 檔案中。對於想要在程式碼編輯器中快速跳至 Turborepo 設定的使用者來說,這比在 package.json 中使用 turbo 金鑰更好。

若要自動從 package.json 中的目前設定遷移,請查看新的分支,導覽至單一程式碼庫的根目錄,然後執行下列 codemod

終端機
npx @turbo/codemod create-turbo-config .

如需此轉換的詳細資訊,請查看文件

更快的套件管理員偵測

Turborepo 現在支援最近在 package.json 中建立的 packageManager 欄位,以便更快地偵測套件管理員。先前,turbo 會檢查特定檔案以推斷此資訊。若要自動設定此欄位,請查看新的分支,導覽至單一程式碼庫的根目錄,然後執行

終端機
npx @turbo/codemod add-package-manager .

如需此轉換的詳細資訊,請查看文件

環境變數相依性

當您將 turbo 與在建置時內嵌環境變數的工具(例如 Next.js 或 Create React App)一起使用時,務必告知 turbo,以避免傳送具有錯誤環境變數的快取成品。

您現在可以根據環境變數的值和檔案的內容來控制 turbo快取指紋(又稱雜湊)行為

./turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": {
        "^build"
        // env vars will impact hashes of all "build" tasks
        "$SOME_ENV_VAR"
      },
      "outputs": ["dist/**"]
    },
    "web#build": { // override settings for the "build" task for the "web" app
      "dependsOn": [
        "^build",
          // env vars that will impact the hash of "build" task for only "web" app
          "$STRIPE_SECRET_KEY",
          "$NEXT_PUBLIC_STRIPE_PUBLIC_KEY",
          "$NEXT_PUBLIC_ANALYTICS_ID",
      ],
      "outputs": [".next/**", "!.next/cache/**"],
    },
    "docs#build": { // override settings for the "build" task for the "docs" app
      "dependsOn": [
        "^build",
          // env vars that will impact the hash of "build" task for only "web" app
          "$STRIPE_SECRET_KEY",
          "$NEXT_PUBLIC_STRIPE_PUBLIC_KEY",
          "$NEXT_PUBLIC_ANALYTICS_ID",
      ],
      "outputs": [".next/**", "!.next/cache/**"],
    }
  },
  "globalDependencies": [
    "$GITHUB_TOKEN"// env var that will impact the hashes of all tasks,
    "tsconfig.json" // file contents will impact the hashes of all tasks,
    ".env.*" // glob file contents will impact the hashes of all tasks,
  ]
}

注意:在大多數單一程式碼庫中,您通常不會在共用套件中使用環境變數,而大多是在應用程式中使用。因此,為了獲得更高的快取命中率,您應該只在使用的/內嵌的應用程式特定任務中包含環境變數。

如需詳細資訊,請閱讀快取和雜湊文件

部分支援 Yarn v2/v3

除了 Yarn v1、npm 和 pnpm 套件管理員之外,Turborepo 現在也支援使用.yarnrc.yml 中設定的 nodeLinker: "node-modules"的 Yarn v2+。此金鑰會告知 Yarn v2+ 模仿 Yarn v1 的 node_modules 安裝行為。目前不支援 Yarn v2+ Plug'n'Play(又稱「PnP」)。

下一步是什麼?

自從我們推出以來,Turborepo 一直專注於無縫的增量採用/遷移以及加速 CI/CD。我們致力於這兩個價值,但現在我們也將專注於改善 Turborepo 的日常人體工學,以進行本機開發和可觀察性。我們對下一個篇章感到非常興奮,並將很快分享更多詳細資訊。

我們正在招募!

Vercel 的 Turborepo 團隊正在招募!我們特別正在尋找全職的資深全端軟體工程師資深 DevOps/基礎架構工程師,以協助我們讓 Turborepo 變得更好。