我在git中有很多分支,在composer.json
每次git checkout
之后我需要做composer install
并且作曲家开始下载丢失的包。在那一刻,composer删除了其他分支所需的包。当我将结账到其他分支机构时,我将需要再次下载该软件包。对于诸如PHPUnit,Codeception或其他框架之类的软件包,需要很长时间。
是否可以禁用在composer中删除未使用的包? (我在凉亭或npm中遇到过这个功能。)
谢谢。
答案 0 :(得分:2)
现在不支持此功能,因为install
只执行符合项目要求所需的操作。从技术上讲,在您的情况下,需求会发生变化,其行为是正确的。虽然这个功能可以在Composer中实现,但这并不是一件容易的事,因为它的“不自然”行为对于破解来说是非常低级的。
但是我认为这里的真正问题是您的工作流程不正确。如果Git中的不同分支具有完全不同的依赖关系,那么首先它们应该真的是分支,而不是完全不同的存储库,因为它们实际上是不同的项目。
如果不是这种情况,最简单的解决方案就是多次克隆存储库,并将不同的克隆保留在各自的分支中。这样可以立即解决所有问题,让Composer按照预期的方式完成工作。这在大型项目中也是一个非常常见的工作流程,因为就地分支切换实际上只适用于PR和功能分支等短期分支。