lerna存在的必要性

lerna是什么,它解决了什么问题

  • 在开发脚手架过程中通常会采用分包开发
  • 将需要分包的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版本很难保持一致性

lerna的存在就是为了解决以上问题,lerna是一个基于npm和git的多package管理工具

posted on 2022-05-14 18:20  素心~  阅读(86)  评论(0编辑  收藏  举报

导航