Appearance
monorepo
什么是 monorepo
多项目单一仓库管理方案(多项目管理方案)
概念:一个仓库管理多个项目的工程化开发管理模式
优势:
- 便于代码和依赖在多个项目之间的共享和复用
- 更方便简单的项目版本控制(统一管理依赖)
- 提高多项目的构建与部署的便捷性(CI/CD)
- 简化版本控利:只需要管理一个仓库,统一发布和版本控制更方便
- 提高团队协作的便利性
缺点:
- 维护成本上升
- 复杂度增加:随着项目数量增多,仓库结构变得复杂,新成员上手难度变大
- 需要引入额外工具链(如 Lerna、Turborepo、Nx、pnpm workspace)来管理依赖和构建流程
- 权限与安全问题
- 所有项目都在一个仓库中,无法像多仓库那样灵活设置访问权限
- 安全性风险集中,一旦主仓库被攻击或误操作,所有项目都可能受到影响
- 性能与构建效率问题
- 随着项目和模块增加,仓库可能变得非常庞大,影响克隆和构建速度
- 如果没有良好的增量构建机制(如 Nx、Turborepo),每次全量构建会非常耗时
- 维护成本上升
发展历程
- 单体仓库单应用模式:一个仓库管理一个单应用
- 缺点:随着项目的功能迭代,单体应用的规模会逐渐变大,难以维护
- 多仓库多应用模式:多个应用分配给多个对于的仓库进行管理
- 缺点:无法进行项目依赖与代码的共享,多应用之间的结合变得复杂困难
- 单仓库多应用模式:一个仓库管理多个应用
- 优点:业务代码分离解耦,应用间共享依赖与代码、项目配置和构建部署、项目扩展更方便
什么情况采用 monorepo
场景一:大型项目与多项目协作
- 场景:企业或团队维护多个紧密关联的项目(如前端、后端、工具库等)。
- 优势:集中管理代码,方便跨项目修改和协作,避免代码分散导致的重复劳动。
场景二:共享代码与依赖
- 场景:多个项目共用组件库、工具函数或配置(如 UI 组件、通用 SDK)。
- 优势:直接引用内部模块,避免多仓库的版本同步问题,确保依赖一致性。
场景三:统一构建与持续集成(CI/CD)
- 场景:需要标准化构建、测试和部署流程。
- 优势:集中配置 CI/CD,仅针对变更部分触发构建(增量构建),提升效率。
示例:前端主应用 + 微前端子应用 + 公共 SDK
❌ 不推荐使用情况:
- 小型独立项目
- 项目完全独立,无共享逻辑