0

我有三个独立的项目(比如 P1、P2 和 P3),每个项目都有作曲家设置。

P1 需要 P2 的一部分,P2 需要 P3 的一部分,这反过来又导致 P1 内的作曲家强迫我需要 P3。有没有办法消除这种依赖关系,因为 P1 不需要 P3 中的任何代码?除了在作曲家之外删除它。

我尝试require-dev在 P1 作曲家文件中设置 P3,然后在运行--no-dev时设置标志composer install/update,但它仍在添加供应商,我想是因为 P2 的要求。

4

1 回答 1

0

您无法避免 P3 出现在 P1 的供应商目录中。这就是作曲家的工作方式。

可能是 P1 使用的 P2 部分不使用 P3 内部的任何东西,但这并不重要。只要 P2 声明它需要 P3 才能工作,任何需要 P2 的项目也将包括 P3。

我想知道你为什么说你被迫要求 P3。唯一正确的原因是如果您还命名了包含您的代码的存储库,因为您不想通过 packagist.org 发布它们。

但这只是事实的一半。您不必要求 P3 - 您只需说明包含最终需要的所有代码的所有存储库。

如果你想摆脱在你的库模块中包含大量私有存储库,我建议你看看Satis。这是一个可以创建所有存储库的包列表的脚本,然后您只需命名创建的 package.json 文件的位置,而不是您可能使用的每个存储库。不过,您必须想办法将新的存储库添加到 Satis - 但您只需要执行一次,并且只需要执行一次。

于 2013-08-29T23:07:55.917 回答