iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0

Turborepo的緩存機制

  • Turborepo可以緩存任務的結果和日誌,大幅提升效能
  • 使用輸入文件的hash來判斷是否可以使用緩存
  • 緩存儲存在本地文件系統中

範例:

{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "build": {
      "outputs": ["dist/**", ".next/**"],
      "dependsOn": ["^build"]
    }
  }
}

調整緩存輸出

可以使用pipeline..outputs來配置緩存輸出
可以設置為空數組[]只緩存日誌

範例:

{
  "pipeline": {
    "test": {
      "outputs": [], // 只緩存日誌
      "dependsOn": ["build"]
    }
  }
}

調整緩存輸入

使用inputs來定義與任務相關的文件
可以限制只有特定文件變更時才重新執行任務

範例:

{
  "pipeline": {
    "test": {
      "inputs": ["src/**/*.tsx", "src/**/*.ts", "test/**/*.ts"]
    }
  }
}

環境變量與緩存

可以在pipeline..env中指定影響緩存的環境變量
使用globalEnv指定影響所有任務的環境變量

範例:

{
  "pipeline": {
    "build": {
      "env": ["SOME_ENV_VAR"]
    }
  },
  "globalEnv": ["GITHUB_TOKEN"]
}

自動包含框架相關的環境變量

Turborepo會自動檢測使用的框架並包含相關公開環境變量

使用ESLint配置

eslint-config-turbo可以幫助檢測未使用的依賴和環境變量配置

範例:

{
  "extends": ["turbo"]
}

強制覆蓋緩存

使用--force參數可以忽略緩存並強制重新執行任務

指令範例:
run build --force

緩存的Hash算法

Turborepo使用多個因素來生成緩存的哈希值,包括全局狀態、工作區任務相關文件、依賴關係等

總結:
Turborepo提供了強大的緩存機制,可以大幅提升構建和測試的效能。
通過合理配置輸入輸出、環境變量和ESLint規則,可以更好地利用緩存功能。

同時,Turborepo還提供了自動檢測框架和強制覆蓋緩存等實用功能,使其成為管理大JavaScript/TypeScript項目的有力工具。


上一篇
Turborepo 實際案例2
下一篇
MonoRepo 整理文章
系列文
讓我們一起與turboRepo共舞30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言