2013-08-29 56 views
0

我有三个独立的项目(比如P1,P2和P3),每个都有作曲家设置。作曲家 - 多个依赖关系问题

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

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

回答

0

您不能规避P3出现在P1的供应商目录中。这就是作曲家的作品。

这可能是由P1使用的P2部件不使用P3内的任何东西,但这并不重要。只要P2表示它需要P3工作,任何需要P2的项目都将包含P3。

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

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

如果你想摆脱与你的图书馆模块包括私人存储库的巨大名单,我建议你看看Satis。这是一个脚本,可以创建所有存储库的软件包列表,然后只需要命名创建的package.json文件的位置,而不是每个可能使用的存储库。但是,您必须想办法向Satis添加新的存储库 - 但您只需要做一次,而且只需要一次。

+0

感谢您的反馈意见。他们确实都是通过git加载的私人项目,并且让它们公开并不是一种选择。由于作曲家不支持我们之前合并到项目中的标签命名约定('vX.Y.Z-releasename'),因此我们必须要求所有项目都通过dev-master加载存储库。 – user1656435

+0

Composer确实支持'vX.YZ'作为标签名称,你只需要删除'-releasename'后缀,因为它用于像'alpha','beta'或'RC'标签几乎释放的东西准备好版本。 – Sven