Javascript Monorepo中的依赖关系
在monorepo中,如果您在一个包中有依赖项,您可以在另一个包中使用该依赖项而不将其添加到该包中吗?为了更清楚,请查看下面的布局Javascript Monorepo中的依赖关系,javascript,monorepo,Javascript,Monorepo,在monorepo中,如果您在一个包中有依赖项,您可以在另一个包中使用该依赖项而不将其添加到该包中吗?为了更清楚,请查看下面的布局 Project |-packages |- packageA |- package.json (Here let say I have lodash dependency) |- index.js |- packageB |-package.json (I ha
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中导入lodash吗?或者我必须在那里添加它吗?作为不同的包,您必须在这两个包中都添加依赖项。您可以使用for monorepo来匹配依赖项并指定为根依赖项
lerna link convert
如果
packageB
使用lodash,则应在packageB
的package.json
文件中列出lodash。如果你不这样做,坏事就会发生。例如,考虑以下情况:
包装A
中删除。在您的案例中,您提到了packageA
将lodash列为依赖项。但是,如果您重构了不再需要lodash的packageApackageA,您可能会认为它是未使用的,而将其删除。如果packageB
依赖于packageA
安装lodash,则packageB
将由于缺少依赖关系而中断
packageB
安装时不带packageA
。如果不知道您的软件包包含哪些内容,很难确定,但现在或将来,您(或其他人)可能会安装packageB
,而无需安装packageA
。然后,您将遇到相同的情况,即lodash未安装,packageB
将损坏packageA
更新至lodash的新主要版本。如果packageB
不再与lodash的新主要版本兼容,它可能会崩溃。如果packageB
指定了它自己对lodash的依赖性,那么这不会是一个问题,因为您可以根据最佳情况一起或单独更新它们注意,您可以在
packageA
和packageB
中指定lodash作为对等依赖项,让消费应用程序安装lodash,这样您就不必在两个包中都安装它,但这并不能真正简化monorepo或消费应用程序中的事情。它是否也适用于对等依赖?也需要指定为devdependency。