Monorepo
規則
- 使用 Turborepo 進行任務協調 —
turbo.json定義了 Pipeline package.json中的工作空間設定:"workspaces": ["apps/*", "packages/*"]- 共用套件位於
packages/— UI 元件、設定檔、型別 - 應用程式位於
apps/— web、api、mobile 等 - 內部套件使用
"main": "./src/index.ts"— 無需建置步驟 turbo.jsonPipeline:定義dependsOn、outputs、cache- 共用 tsconfig:
packages/config-typescript/由所有套件繼承 - 共用 ESLint 設定:
packages/config-eslint/
避免
- 應用程式之間直接引用 — 應使用共用套件
- 不同套件中使用不同版本的相同相依性 — 應使用
pnpmoverrides - 在 turbo pipeline 中遺漏
dependsOn— 會導致過時建置 - 建置內部套件 — 應使用 TypeScript 路徑別名或
main: ./src/index.ts