Turborepo 1.4

2022 年 8 月 9 日,星期二
Greg Soltis
姓名
Greg Soltis
X
@gsoltis
Nathan Hammond
姓名
Nathan Hammond
Tom Knickman
姓名
Tom Knickman
X
@tknickman
Anthony Shew
姓名
Anthony Shew
X
@anthonysheww
Jared Palmer
姓名
Jared Palmer
X
@jaredpalmer
Mehul Kar
姓名
Mehul Kar
X
@mehulkar

Turborepo 1.4 帶來了

立即執行 npm install turbo@latest 來更新。

自動環境變數包含

為了協助確保跨環境的正確快取,Turborepo 現在將在計算使用 Astro、Create React App、Gatsby、Next.js、Nuxt、SvelteKit、Vite、Vue 等建置的應用程式的快取金鑰時,自動推斷並包含公開環境變數。如果您手動宣告了框架特定的公開環境變數,您可以安全地從 turbo.json 中移除它們。

turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": [
        "^build"
-       // Include build time public inlined environment variables that
-       // are different in development and production, so that
-       // Turborepo does not use the same cached build
-       // across environments
-       "$NEXT_PUBLIC_EXAMPLE_ENV_VAR"
      ]
    }
  }
}

請注意,只有在 Turborepo 成功推斷出您的應用程式所建置的框架時,此自動偵測和包含功能才會運作。此外,環境變數只會包含在使用該框架的工作區中任務的快取金鑰中。換句話說,為 Next.js 應用程式推斷的環境變數,只會包含在偵測為 Next.js 應用程式的工作區的快取金鑰中。Monorepo 中其他工作區的任務將不受影響。

例如,考慮一個具有三個工作區的 monorepo:一個 Next.js 專案、一個 Create React App 專案和一個 TypeScript 套件。每個工作區都有一個 build 指令碼,並且這兩個應用程式都依賴 TypeScript 專案。假設此 Turborepo 具有標準的 turbo.json 管線,可依序建置它們

turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": ["^build"]
    }
  }
}

從 1.4 版開始,當您執行 turbo run build 時,Turborepo 在建置 TypeScript 套件時將不會考慮任何相關的建置時間環境變數。但是,在建置 Next.js 應用程式時,Turborepo 將推斷以 NEXT_PUBLIC_ 開頭的環境變數可能會變更 .next 資料夾的輸出,因此應在計算雜湊時包含這些變數。同樣地,在計算 Create React App 的 build 指令碼的雜湊時,所有以 REACT_APP_PUBLIC_ 開頭的建置時間環境變數都將包含在內。

這種依框架提高雜湊特異性的改進,是朝向最佳、安全和正確快取邁出的重要一步。

eslint-config-turbo

我們還建立了一個新的 ESLint 設定,以提供進一步的編輯器內協助,以協助確保您的 Turborepo 快取可以在每個環境中正確共用。雖然我們新的雜湊演算法應涵蓋大多數框架的大多數情況,但此 ESLint 設定將為使用其他非框架前綴但會影響建置輸出(即快取)的建置時間內嵌環境變數的團隊,以及使用我們無法自動偵測的內部框架的團隊提供編輯器內回饋。

若要開始使用,請從根目錄 eslintrc 檔案中的 eslint-config-turbo 擴充

.eslint.config.js
{
  // Automatically flag env vars missing from turbo.json
  "extends": ["next/core-web-vitals", "turbo"]
}

如果您偏好更精細地控制規則,可以使用和設定 eslint-plugin-turbo *外掛程式*,方法是先將其新增至外掛程式,然後設定所需的規則

.eslint.config.js
{
  "extends": ["next/core-web-vitals"],
  "plugins": ["turbo"],
  "rules": {
    // Automatically flag env vars missing from turbo.json
    "turbo/no-undeclared-env-vars": "error"
  }
}

如果您在程式碼中使用未在 turbo.json 中宣告的非框架相關環境變數,則此外掛程式會向您發出警告。

從 1.4.x 版開始,我們現在將 eslint-config-turbo 包含在我們所有的範例以及透過 npx create-turbo 產生的新專案中。

ESLint 文件中深入瞭解 ESLint 設定和外掛程式。

新的框架和函式庫範例

根據您的意見和建議,我們建立了新的範例,將 Turborepo 整合到您的工作流程中

其他錯誤修正和改進

社群

自從 6 月發佈 Turborepo v1.3 以來,我們看到了驚人的採用率和社群成長

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

此版本由以下人員貢獻:@B2o5T、@chitchu、@elis、@gsoltis、@harshcut、@jaredpalmer、@kocisov、@nathanhammond、@neolivz、@NuroDev、@oneezy、@samouri、@shayc、@StevenMatchett、@tknickman、@trevorr、@zsoldosp 等!

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