Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Composer php Composer-多个依赖项问题_Composer Php - Fatal编程技术网

Composer php Composer-多个依赖项问题

Composer php Composer-多个依赖项问题,composer-php,Composer Php,我有三个独立的项目(比如P1、P2和P3),每个项目都有composer设置 P1需要P2的一部分,P2需要P3的一部分,这反过来导致P1中的作曲家迫使我需要P3。P1不需要P3中的任何代码,有没有办法消除这种依赖关系?除了在composer之外删除它 我尝试将P3设置为P1 composer文件中的require dev然后在运行composer install/update时设置--no dev标志,但由于P2的需要,它仍然在添加供应商。您不能规避P3出现在P1的供应商目录中。作曲家就是这样

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

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


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

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

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

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

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


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

谢谢您的反馈。它们实际上都是通过git加载的私有项目,而将它们公开并不是一种选择。我们必须要求所有项目,因为目前我们必须通过dev master加载存储库,因为composer不支持我们以前加入到项目中的标记命名约定(“vX.Y.Z-releasename”)。composer支持
vX.Y.Z
作为标记名,您只需删除
-releasename
后缀,因为这是用于像
alpha
beta
,或
RC
等几乎可以发布的版本的标记。