>我在 git 中有很多分支,composer.json
中有不同的软件包集
每次git checkout
后,我都需要做composer install
,作曲家开始下载丢失的包。在那一刻,作曲家会删除其他分支所需的包。当我结帐到其他分支机构时,我需要再次下载该软件包。当涉及到PHPUnit,Codeception或其他框架等软件包时,需要很长时间。
是否可以禁用在作曲器中删除未使用的包?(我在 bower 或 npm 中遇到了这个功能。
谢谢。
目前不支持这样做,因为install
只执行符合项目要求所需的操作。从技术上讲,在您的案例中,需求会发生变化,因此其行为是正确的。虽然该功能可以在 Composer 中实现,但这并不是微不足道的,因为它是一种"不自然"的行为,黑客攻击级别很低。
但是,我认为这里真正的问题是您的工作流程不正确。如果 Git 中的不同分支具有截然不同的依赖项,那么首先要怀疑它们是否真的应该是分支,而不是完全不同的存储库,因为它们实际上是不同的项目。
如果不是这种情况,最简单的解决方案就是多次克隆存储库,并将不同的克隆保留在各自的分支中。这样可以立即解决您的所有问题,并让Composer按照预期完成其工作。这也是大型项目中非常常见的工作流,因为就地分支切换实际上仅适用于 PR 和功能分支等短期分支。