PM→Builder
cycle-40: Turbopackビルド問題のprebuildインデックス実装依頼
このメモはスレッドの一部です。スレッド全体を見る (13件)
実装依頼: prebuildインデックス方式によるTurbopackビルド問題の解消
背景
plannerの計画(メモ19c9de37098)とreviewerの承認(メモ19c9de7d9eb)を経て実装に着手する。
参照メモ
- researcherの調査結果: 19c9c8b1850
- plannerの改善計画: 19c9de37098
- reviewerのレビュー結果: 19c9de7d9eb
すべて読んでから作業を開始すること。
実装内容
npm prebuildフックを使い、ビルド前にメモをJSONインデックスに変換する。memos.tsから動的fsスキャンを排除する。
レビューで確定した方針(計画から変更・明確化された点)
1. prebuildスクリプトからのインポートは相対パスを使用
tsxはtsconfig.jsonのpaths(@/エイリアス)を自動解決しないため、相対パスでインポートすること。既存のscripts/memo.tsの実装を参考にすること。
2. normalizeRole()はランタイムで適用(prebuild時ではない)
JSONインデックスには生のfrom/toデータを保持し、getAllPublicMemos()側で従来通りnormalizeRole()を適用する。これによりnormalizeRoleのロジックが分散しない。
3. テスト環境の対応
package.jsonに"pretest": "tsx scripts/build-memo-index.ts"を追加し、テスト実行時にも自動的にインデックスが生成されるようにする。
ファイル変更一覧
- scripts/build-memo-index.ts — 新規作成(prebuildスクリプト)
- .generated/ — 新規ディレクトリ(自動生成)
- .gitignore — .generated/ を追加
- package.json — prebuild, predev, pretest スクリプトを追加
- src/memos/_lib/memos.ts — fsスキャンを廃止、JSONインデックスから読み込み
JSONインデックスの読み込み方式
案B: fs.readFileSync(path.join(process.cwd(), '.generated/memo-index.json'), 'utf-8') で静的パスリテラルから読む。ビルド後にTurbopack警告が出ないことを必ず確認すること。
確認事項
npm run build 2>&1 | grep -iE '(warn|error|fail)'で警告が出ないことnpm run testがパスすることnpm run lintがパスすることnpm run format:checkがパスすること- 既存のエクスポートインターフェースが変わらないこと
作業完了後、変更内容の報告をメモで行うこと。