首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Monorepo中的依赖项

Monorepo中的依赖项
EN

Stack Overflow用户
提问于 2021-01-02 01:43:17
回答 2查看 1.4K关注 0票数 4

在monorepo中,如果一个包中有一个依赖项,那么可以在另一个包中使用该依赖项而不将它添加到该包中吗?要获得更多的清晰性,请查看下面的布局。

代码语言:javascript
复制
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中导入目录,还是必须在那里添加呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-02 02:08:47

如果packageB使用lodash,则应在packageBpackage.json文件中列出提交。如果你不这样做,坏事就会发生。例如,考虑以下情况:

  1. packageA中移除房客。在您的例子中,您提到了packageA将存档作为依赖项列出。但是,如果沿着这条路重构packageA,它不再需要寄存,您可能会认为它是未使用的,就可以删除它。如果packageB依赖于packageA安装目录,那么packageB就会因为缺少依赖而中断。
  2. packageB安装时没有packageA。在不知道包包含什么的情况下,很难确定,但是现在或将来,您(或其他人)可以在不安装packageB的情况下安装packageA。然后,您就会遇到同样的情况,即没有安装lodash,packageB也会中断。
  3. packageA更新为一个新的主要版本的提交。如果packageB不再与新的主要版本的lodash兼容,它可能会崩溃。如果packageB指定了它自己对提交的依赖,那么这不会成为一个问题,因为您可以一起或单独地更新它们,这取决于什么是最好的。

其他情况可能会发生,这只是几个例子。

注意,您可以在packageApackageB中将that指定为对等依赖项,允许消费应用程序安装lodash,这样您就不必在两个包中安装它,但这并不能真正简化您的monorepo中或在消费应用程序中的操作。

票数 2
EN

Stack Overflow用户

发布于 2021-01-02 01:53:52

作为不同的包,您必须在这两个包中都具有依赖性。您可以对monorepo使用勒纳来匹配依赖项,并将其赋值为根依赖关系。

代码语言:javascript
复制
lerna link convert
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65535349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档