在看 Lerna 文档的时候:
将大型代码仓库分割成多个独立版本化的 软件包(package)对于代码共享来说非常有用。但是,如果某些更改 跨越了多个代码仓库的话将变得很 麻烦 并且难以跟踪,并且, 跨越多个代码仓库的测试将迅速变得非常复杂。
有不明白:
1.将大型代码仓库分割成多个独立版本化的 软件包(package)对于代码共享来说非常有用。
是指的monorepo吗?
2.跨越了多个代码仓库的话将变得很 麻烦 并且难以跟踪,并且, 跨越多个代码仓库的测试将迅速变得非常复杂。
指的是共享代码被修改,那么其他代码仓库使用到共享代码的时候,会测试变得复杂且难以跟踪是吗?
为了解决这些(以及许多其它)问题,某些项目会将 代码仓库分割成多个软件包(package),并将每个软件包存放到独立的代码仓库中。但是,例如 Babel、 React、Angular、Ember、Meteor、Jest 等项目以及许多其他项目则是在 一个代码仓库中包含了多个软件包(package)并进行开发。
3.为了解决这些(以及许多其它)问题,某些项目会将 代码仓库分割成多个软件包(package),并将每个软件包存放到独立的代码仓库中
这里和问题1有什么区别?不是没有改进吗?
4.但是,例如 Babel、 React、Angular、Ember、Meteor、Jest 等项目以及许多其他项目则是在 一个代码仓库中包含了多个软件包(package)并进行开发。
指的是配置在repo下,那么其他的packages也适用这些配置是吗?
5.那么lerna和这种配置(3.4)有什么关系呢?
1. 将代码拆成独立的包是monorepo吗?
不是。
文中描述的意思是说,将一个大的项目拆成多个小的项目,每个小项目单独一个仓库。
就像一个函数在了要拆成多个小函数一样方便复用。
2. 共享代码发生变化会使测试变得更加复杂是吗?
对。
就像函数A依赖函数B,函数A又依赖函数C,如果C发生了破坏性就更,B和A都得跟着改。
如果多个项目仓库上发生这种连锁变更,肯定非常麻烦呀,要不停的push,pull不同仓库的代码
3. 对比1来说没啥改进?
错。
1是把多个小项目放在多个仓库里,解决的问题是单体应用太大的巨石应用问题。
3是把多个仓库里的小项目放在同一个仓库里,但是是用monorepo的方式组织,解决的是频繁连锁修改多个项目的问题
4 所有项目共用同样的包吗?
是
5 lerna能做什么
lerna现在的功能主要是momorepo的包版本管理以及script命令执行。
如果你不做插件开发和写各种单元集成测试,lerna对你来说没太大用。
你想了解的monorepo,npm,yarn,pnpm都原生支持,在官方文档里搜索workspacw就行
最后
你问题中贴的文档链接已经过时好久了,建议直接看英文原版文档
ps,手机码字,就不贴链接了