Composer php 我如何在';作曲家包括哪些?

Composer php 我如何在';作曲家包括哪些?,composer-php,Composer Php,我维护一个软件包,该软件包由Composer管理,用作其他应用程序的库 我不明白我该如何在我的软件包上工作,而不让作曲家碍手碍脚,一直覆盖我的作品 我想要的是: -一些应用程序 -卖主 -我的包 其中my_包是我控制下的git克隆,我可以在其中进行测试分支、推送到github等,Composer不会覆盖它或更改当前签出的提交 < >但是我希望作曲家注意到我的套装是自动装填的,并考虑它对某些应用程序运行的要求,以及在某个应用程序上的作曲家更新以正常运行。 如何做到这一点?Composer不支持

我维护一个软件包,该软件包由Composer管理,用作其他应用程序的库

我不明白我该如何在我的软件包上工作,而不让作曲家碍手碍脚,一直覆盖我的作品

我想要的是:


-一些应用程序
-卖主
-我的包

其中my_包是我控制下的git克隆,我可以在其中进行测试分支、推送到github等,Composer不会覆盖它或更改当前签出的提交

< >但是我希望作曲家注意到我的套装是自动装填的,并考虑它对某些应用程序运行的要求,以及在某个应用程序上的作曲家更新以正常运行。
如何做到这一点?

Composer不支持您要求的确切功能。作为其他应用程序的插件,您不能在
vendor
中修改任何内容,并期望它保持不变。Composer将直接从
Composer.json
文件中的信息合成
vendor
的全部内容。不允许进行后期处理,除非在
composer.json
文件中有用于声明挂钩的指令

因此,正确的方法是使用应用程序提供的机制来管理插件所需的依赖项。是Composer插件机制的一个示例;有一个不同的

如果您尝试扩展的应用程序不支持其插件声明Composer依赖项,您可以创建自己的Composer.json文件,该文件存储在应用程序不知道的某个位置,并使用它生成单独的
vendor
目录及其自己的
autoload.php
文件。然后,您可以手动包含自己的自动加载文件,这将允许PHP包含
供应商
目录中包含的任何类文件。如果插件的依赖项未被主应用程序使用,并且没有出现在主应用程序的
供应商
目录中的任何位置(包括依赖项的所有依赖项及其依赖项,等等),那么这将起作用。但是,如果插件中的依赖项与主应用程序的依赖项之间存在重叠,那么您可能会发现此解决方案在某些时候可以正常工作,而在其他时候会以难以诊断的方式严重失败。关于为什么拥有多个自动加载文件是一个如此糟糕的主意的解释,请参阅博客文章和