monorepo学习(1)
monorepo单个仓库可以包含去多相关但是独立的项目。
- 子项目可以独立运行,共享代码,但是没有强依赖,剥离出来也能运行,引入方式从workspace转换为npm。
- 开发环境中少以来或者不依赖全局变量下的node_module。
polyrepo多git结构,只要能独立运行命令项目就切分为单独git仓库。缺点如下
a. 需要git clone多个仓库,并且运行不同的命令跑服务。
b. 代码复用率下降,公共函数通过复制或npm方式共享[将公共函数封装成独立的包发布到私有的npm仓库,可以通过安装npm包来使用这些公共函数,方便与版本管理。]
c. 版本不同,新人接受成本高,eslint,commitlint, prettier配置和changeslogs生成规则不同。
monorepo 在安装依赖,本地开发调试,ci构建,发布上线方面的优势。monorepo安装只装一次,但是多git的话,项目个数就是需要安装的次数。本地开发的过程中,monorepo在当前项目中使用多个终端会话,多git不同项目的终端下启动命令。monorepo提取工具和配置到独立包中,多git需要人为的将所有项目package.json的版本统一。服用代码就是复制或者是npm了,但是在monorepo中,通过workspace在本地简历炼器,通过tsconfig配置patchs获取代码提示,打包通过alias插件解析路径。在多git的下,实现代码格式统一,需要将eslint, tslint, prettier抽成npm包,并督促所有项目负责人接入。monorepo是通过workspace来引入。ci构建:多git各自构建。monorepo根据packagejson的依赖产出有向无环图。通过拓扑排序构建涉及到的项目。
monorepo有技术选型的,回头单独搞一个文章学习总结。涉及到幽灵依赖等等