Monorepo 描述
- Monorepo 是一种项目代码管理方式,指单个仓库中管理多个项目,有助于简化代码共享、版本控制、构建和部署等方面的复杂性,并提供更好的可重用性和协作性。 Monorepo 提倡了开放、透明、共享的组织文化,这种方法已经被很多大型公司广泛使用,如Google、Facebook 和Microsoft 等。
优势
- 一致性(Consistency): 当你把所有代码库放在一个地方时,执行代码质量标准和统一的风格会更容易。
- 原子提交(Atomic commits): 原子提交使大规模重构更容易,开发人员可以在一次提交中更新多个包或项目。
- 依赖关系管理(dependency management): 共享依赖关系很简单,因为所有模块都托管在同一个存储库中,因此都不需要包管理器。
- 统一的CI/CD(Unified CI/CD): 可以为代码库中的每个项目使用相同的CI/CD部署流程。
- 复用 (Reuse): 组件、方法、跨项目复用。方便调试发布,比npm包简单很多, 继承npm包的优势,脱离项目构建、CDN 引入。
劣势
- 对于发布构建的挑战,难度会比单个项目构建要大, (为了解决发布难点,开发了SHT单一仓库 发布平台 (opens in a new tab))
- 无法管理某个、某些项目对于指定人员的权限 (如果后期有需要,可以联系gitlab官方团队)
- 不同分支下的版本控制会显得较为混乱, 包括tag (待解决)