Turborepo: Cache miss
Turborepoでキャッシュが効かない場合の原因と解決策
概要
Turborepoでビルドキャッシュが効かず、毎回フルビルドになる問題です。
エラーメッセージ
``` web:build: cache miss, executing ```
原因
- inputsの設定漏れ: キャッシュキーに含まれるファイルが変更
- 環境変数の変更: envに含まれる変数が異なる
- outputsの不一致: ビルド出力先の設定ミス
- 依存関係の変更: package.jsonの更新
解決策
1. turbo.jsonの設定を確認
```json // turbo.json { “$schema”: “https://turbo.build/schema.json", “globalDependencies”: [".env”], “pipeline”: { “build”: { “dependsOn”: ["^build"], “outputs”: [“dist/”, “.next/”], “inputs”: [ “src/”, “package.json”, “tsconfig.json” ] }, “test”: { “dependsOn”: [“build”], “outputs”: [“coverage/”], “cache”: true }, “dev”: { “cache”: false, “persistent”: true } } } ```
2. 環境変数を適切に設定
```json // turbo.json { “pipeline”: { “build”: { “env”: [“NODE_ENV”, “API_URL”], “passThroughEnv”: [“CI”, “VERCEL”] } }, “globalEnv”: [“GITHUB_TOKEN”] } ```
3. キャッシュ状態を確認
```bash
ドライラン(キャッシュ状態のみ確認)
turbo run build –dry-run
キャッシュの詳細
turbo run build –summarize
キャッシュをクリア
turbo run build –force ```
4. リモートキャッシュを設定
```bash
Vercel Remote Cache
npx turbo login npx turbo link
または .turbo/config.json
{ “teamId”: “team_xxx”, “apiUrl”: “https://vercel.com” } ```
5. .turboignoreを使用
```
.turboignore
node_modules *.log .env.local ```
よくある間違い
- outputsにビルド成果物を含めない
- 環境変数をenvに登録しない
- 依存パッケージの変更を見落とす
関連エラー
関連エラー
この記事は役に立ちましたか?