monoRepo vs Multiple Repo

🔁 Monorepo(單一儲存庫)

所有前端應用(或前後端、套件、元件庫等)都放在同一個 Git 儲存庫中。

✅ 優點

  • 統一開發流程與依賴管理:使用工具如 TurborepoNxLerna 可以集中管理套件、執行 CI/CD。

  • 跨專案協作更簡單:可以輕鬆引用共享元件、utils,不需要發布到 npm 或設定私有 registry。

  • 更容易執行整體測試與 lint:可以一次對整個 monorepo 執行 lint、build、test。

  • 版本一致性更好:所有應用與元件的版本可以同時更新,降低相依性錯誤。

❌ 缺點

  • 儲存庫規模大,clone 較慢

  • 權限與責任劃分困難:每個人都能看到所有 code,對大型組織可能會造成風險或混亂。

  • CI/CD 更複雜:需要配置增量 build、cache 機制等(不過工具如 Turborepo 已能解決)。


📦 Multiple Repo(多儲存庫)

每個專案、模組、子應用都在自己的儲存庫中。

✅ 優點

  • 清楚的邊界與責任歸屬:每個 repo 對應一個團隊或應用,權限控制簡單。

  • 儲存庫較輕便:clone、CI/CD 速度快。

  • 變更影響小:更新一個應用不會影響其他應用。

❌ 缺點

  • 共享代碼困難:需要建立共享套件 repo,並使用 npm 或私有 registry 管理版本。

  • 協作成本高:跨 repo 修改需要同時開 PR,處理多個 CI/CD。

  • 版本不一致風險高:更新一個元件後,各應用需要手動升級依賴。

Last updated