lerna存在的必要性
lerna是什么,它解决了什么问题
使用npm link 的方式生成软链接,链接到当前开发目录
- 在开发脚手架过程中通常会采用分包开发
- 将需要分包的lib文件夹使用npm link的方式,在全局node_modules 下面添加一个指向开发目录的软连接
- 在执行文件开发目录下通过 npm link lib 的方式添加一个指向全局node_modules的包
- 它的执行过程是这样的
- 操作系统解析主命令找到可执行文件cmd 或软连接,执行全局node_modules下的软连接或快捷方式
- 全局node_modules下的软连接指向开发目录的可执行文件
- 运行文件通过node内置的module模块中的path一层层向上查找需要的包,找到lib包发现是软连接或快捷方式
- 其指向的是全局node_modules下的lib包,然后继续查找通过全局node_modules找到开发目录的lib包
上述过程无疑是非常繁琐的,当一个项目package的数量达到十个二十个的时候,再使用这种方式分包开发,将是非常难以管理的。
数十个package改变版本号,数十个package同时依赖一个utils package,当一个包发生修改,其他依赖它的包都要相对更改,这是不符合OCP原则的
同时会有非常多的重复工作,package之间的管理将会非常复杂
总结一下在多package项目开发中遇到的问题
- 大量的重复性工作,link操作,修改版本号,publish,等等
- 版本与版本的依赖关系难以管理容易出错
- 每一个package都需要手动publish到npm
- 如何将所有package进行单元测试
- 多package版本很难保持一致性