2016-02-20 34 views
1

我在不同的组包的git的许多分支部门中composer.json如何禁用在作曲家中删除未使用的软件包?

git checkout我需要做composer install和作曲家开始下载缺失的软件包之后。在那一刻,作曲家将删除其他分支所需的软件包。当我结账到其他分支时,我需要再次下载该软件包。当涉及诸如PHPUnit,Codeception或其他框架的包时,需要很长时间

是否可以禁用在作曲家中删除未使用的包? (我在bower或npm中遇到过这个功能)。

谢谢。

回答

2

现在不支持,因为install只是执行符合项目要求所需的操作。从技术角度来看,需求会发生变化,它的行为是正确的。虽然这个功能可以在Composer中实现,但它并不是微不足道的,因为它是非常不方便的行为,而且是非常低级的行为。

但我认为这里真正的问题是您的工作流程不正确。如果Git中的不同分支具有非常不同的依赖关系,那么首先可疑的是它们应该是分支,而不是完全不同的存储库,因为它们实际上是不同的项目。

如果情况并非如此,最简单的解决方案就是多次克隆存储库,并将不同的克隆保留在各自的分支上。立即解决您的所有问题,并让Composer按照预期工作。在大型项目中,这也是一个非常常见的工作流程,因为就地分支交换实际上仅适用于PR和特征分支等短期分支。

+2

应该补充说,Composer通常使用缓存来处理所有事情,因此一旦下载某个版本(作为ZIP文件),它就会被重用。这对HUGE软件包来说仍然需要一些时间,但这些很少。但是,使用分支而不是标记版本将会使Composer克隆存储库成为可能,如果这些存储库被删除并再次克隆,则无需缓存即可完成。提供的rm -r vendor && composer update --prefer-dist可能有助于切换到分支下载的ZIP,只要Composer知道从哪里获得它们(Github的API可以下载它们)。 – Sven