对于Monorepo的理解
传统的项目管理方式就是一个项目便新建一个代码仓库地址。 Monorepo
核心就是把所有项目放在一个代码仓库中进行管理。然后不同
项目使用不同的文件夹进行管理,一般情况下,以Vue3为例Monorepo
的项目架构是这样
├── packages
| ├── pkg1
| | ├── package.json
| ├── pkg2
| | ├── package.json
├── package.json
这样分割代码,每个项目的开发、其实只需要关注少数几个文件夹便可以了。
Menorepo 管理方案
参考 http://www.zyiz.net/tech/detail-141856.html
Monorepo 的优点
- 可见性
每个人都可以看到其他人的代码,这样可以带来更好的协作和跨团队贡献——不同团队的开发人员都可以修复代码中的bug,而你甚至都不知道这个bug的存在。 - 更简单的依赖关系管理
共享依赖关系很简单,因为所有模块都托管在同一个存储库中,因此都不需要包管理器。 - 唯一依赖源
每个依赖只有一个版本,意味着没有版本冲突,没有依赖地狱。 - 一致性
当你把所有代码库放在一个地方时,执行代码质量标准和统一的风格会更容易。 - 共享时间线
API或共享库的变更会立即被暴露出来,迫使不同团队提前沟通合作,每个人都得努力跟上变化。 - 原子提交
原子提交使大规模重构更容易,开发人员可以在一次提交中更新多个包或项目。 - 统一的CI/CD 和 构建流程
Monorepo 的缺点
- 性能差
代码都聚集在一起,IDE, GIT 都会变得缓慢 - 破坏主线
每个人都可以提交代码,若主线遭到破坏,会影响到所有人。 - 学习困难
大量的代码都紧密耦合在一起,增加了学习成本 - 权限管理困难
GIT没有项目内目录的权限控制,只能通过人为的CodeView