範例:
{
"$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項目的有力工具。