Lerna is a tool that optimizes the workflow around managing multi-package repositories with git and npm.
这是来自lerna的github仓库的自我描述。大致意思就是他是一个用来管理multi-package项目的工具,通过使用git和npm(其实yarn也是支持的)
lerna是标准的mono-repo的工具,与普遍的multi-repo的组织架构有着显著的区别。
传统开发即是multi-repo的,即一个module一个仓库,比如公司内部提炼的常用工具、常用组件都是分开存放,开发的时候install在同一个项目里。
而mono-repo则是一个仓库包含整个项目的所有,分成多个package目录分开管理,统一处理相互依赖。比如Babel、react、angular等等知名的库都是采用了mono-repo的方式。比如babel,babel-cli、babel-core、babel-node等等工具都是放在了同一个仓库“babel”中的,而我们安装的时候实际上是yarn add @babel/babel-core这样的安装方式。这就是很典型的mono-repo的模式,整个babel的产品都内聚到了babel的整个仓库内。
对于新知识来说,最重要的一点就是是否值得使用?什么时候应该用?适合哪些情况?