モノレポ
ルール
- Turborepoでタスクオーケストレーション —
turbo.jsonがパイプラインを定義します package.jsonのワークスペース:"workspaces": ["apps/*", "packages/*"]- 共有パッケージは
packages/配下 — UIコンポーネント、設定、型定義 - アプリは
apps/配下 — web、api、mobile など - 内部パッケージは
"main": "./src/index.ts"を使用 — ビルドステップ不要 turbo.jsonパイプライン:dependsOn、outputs、cacheを定義- 共有 tsconfig:
packages/config-typescript/を全パッケージが継承 - 共有 ESLint 設定:
packages/config-eslint/
避けるべきこと
- アプリ間の直接インポート — 代わりに共有パッケージを使用
- パッケージ間での同一依存のバージョン差異 —
pnpmの overrides を使用 - turbo パイプラインで
dependsOnが不足 — 古いビルドが残る原因に - 内部パッケージのビルド — TypeScriptのパスエイリアスまたは
main: ./src/index.tsを使用