是否可以将Lerna用于在API边界上使用rxjs(例如)的多个打字稿项目?

时间:2019-07-16 08:21:45

标签: typescript npm rxjs lerna

我正在尝试获得2个现有的npm项目,这些项目目前在单独的回购协议中使用lerna在单个回购协议中工作。

项目A取决于项目B,它们都是打字稿项目。项目B公开了返回可观察值的函数,项目A使用了这些函数中的观察对象。

由于项目A的node_modules与项目B符号链接,因此项目A可以看到2个不同的rxjs文件夹。它自己安装在自己的node_modules文件夹中,而相同版本安装在Project B的node_modules中。 由于存在rxjs的这两个副本,因此出现类似以下错误:

类型import(“ package_A_node_modules / rxjs”)。可观察性不能分配给类型import(“ package_B_node_modules / rxjs”)。可观察性。

推荐的方法是将依赖项移至根项目。从理论上讲,这很棒,而且大多数情况下都可以工作。您没有任何重复的依赖项,但是有一些坏处:

  1. 如果软件包在安装到消费型应用程序中时没有依赖性,则不会安装任何依赖性!
  2. 一些软件包需要在子项目级别安装。
  3. 如果子项目定义了对等项依赖关系,则不会警告说根项目中安装的依赖项与为子项目列出的对等项兼容

数字2的一个示例是,当尝试运行有角度的aot构建时,它抱怨在@angular/cli中找不到ProjectA/node_modules/angular。 Angular cli依赖于rxjs,因此当我在子项目级别安装它时,我会得到另一个rxjs副本,并且问题再次出现。 并发存在类似的问题。需要将其安装在子项目中,并且再次取决于rxjs。

此刻我看不到任何解决方法,看来这种方法行不通。

0 个答案:

没有答案