在monorepo中,如果一个包中有一个依赖项,那么可以在另一个包中使用该依赖项而不将它添加到该包中吗?要获得更多的清晰性,请查看下面的布局。
Project
|-packages
|- packageA
|- package.json (Here let say I have lodash dependency)
|- index.js
|- packageB
|-package.json (I haven't added lodash here.)
|- index.js那么,我可以在packageB的index.js中导入目录,还是必须在那里添加呢?
发布于 2021-01-02 02:08:47
如果packageB使用lodash,则应在packageB的package.json文件中列出提交。如果你不这样做,坏事就会发生。例如,考虑以下情况:
packageA中移除房客。在您的例子中,您提到了packageA将存档作为依赖项列出。但是,如果沿着这条路重构packageA,它不再需要寄存,您可能会认为它是未使用的,就可以删除它。如果packageB依赖于packageA安装目录,那么packageB就会因为缺少依赖而中断。packageB安装时没有packageA。在不知道包包含什么的情况下,很难确定,但是现在或将来,您(或其他人)可以在不安装packageB的情况下安装packageA。然后,您就会遇到同样的情况,即没有安装lodash,packageB也会中断。packageA更新为一个新的主要版本的提交。如果packageB不再与新的主要版本的lodash兼容,它可能会崩溃。如果packageB指定了它自己对提交的依赖,那么这不会成为一个问题,因为您可以一起或单独地更新它们,这取决于什么是最好的。其他情况可能会发生,这只是几个例子。
注意,您可以在packageA和packageB中将that指定为对等依赖项,允许消费应用程序安装lodash,这样您就不必在两个包中安装它,但这并不能真正简化您的monorepo中或在消费应用程序中的操作。
发布于 2021-01-02 01:53:52
作为不同的包,您必须在这两个包中都具有依赖性。您可以对monorepo使用勒纳来匹配依赖项,并将其赋值为根依赖关系。
lerna link converthttps://stackoverflow.com/questions/65535349
复制相似问题