我有三个独立的项目(比如 P1、P2 和 P3),每个项目都有作曲家设置。
P1 需要 P2 的一部分,P2 需要 P3 的一部分,这反过来又导致 P1 内的作曲家强迫我需要 P3。有没有办法消除这种依赖关系,因为 P1 不需要 P3 中的任何代码?除了在作曲家之外删除它。
我尝试require-dev
在 P1 作曲家文件中设置 P3,然后在运行--no-dev
时设置标志composer install/update
,但它仍在添加供应商,我想是因为 P2 的要求。
我有三个独立的项目(比如 P1、P2 和 P3),每个项目都有作曲家设置。
P1 需要 P2 的一部分,P2 需要 P3 的一部分,这反过来又导致 P1 内的作曲家强迫我需要 P3。有没有办法消除这种依赖关系,因为 P1 不需要 P3 中的任何代码?除了在作曲家之外删除它。
我尝试require-dev
在 P1 作曲家文件中设置 P3,然后在运行--no-dev
时设置标志composer install/update
,但它仍在添加供应商,我想是因为 P2 的要求。
您无法避免 P3 出现在 P1 的供应商目录中。这就是作曲家的工作方式。
可能是 P1 使用的 P2 部分不使用 P3 内部的任何东西,但这并不重要。只要 P2 声明它需要 P3 才能工作,任何需要 P2 的项目也将包括 P3。
我想知道你为什么说你被迫要求 P3。唯一正确的原因是如果您还命名了包含您的代码的存储库,因为您不想通过 packagist.org 发布它们。
但这只是事实的一半。您不必要求 P3 - 您只需说明包含最终需要的所有代码的所有存储库。
如果你想摆脱在你的库模块中包含大量私有存储库,我建议你看看Satis。这是一个可以创建所有存储库的包列表的脚本,然后您只需命名创建的 package.json 文件的位置,而不是您可能使用的每个存储库。不过,您必须想办法将新的存储库添加到 Satis - 但您只需要执行一次,并且只需要执行一次。