作曲家:如何让作曲家知道我已经在本地拥有了这个包?

时间:2017-05-15 09:02:18

标签: composer-php

我知道我们总是可以通过命令安装包:

composer require packageA

但我不知道你们有没有这样的情况:

你想安装你的队友添加到composer.json的大尺寸软件包“packageB”,你的wifi很慢,因此编写器需要很长时间才能获得packageB。然后你有了一个想法:

  

“也许我尝试通过闪存驱动器从我的队友那里获得packageB zip并粘贴   它进入我的项目。“

你做到了,这个包按预期工作。精彩! 但是,你再想一想:

  

如果现在我想让作曲家更新我的其他软件包怎么办?   项目

你试试:

composer update

然后,会发生什么事情,作曲家将再次获得该包,因为您没有使用“composer install”或“c​​omposer update”来安装packageB,因此作曲家不知道你拥有它。

(很抱歉很长的解释)。 所以我的问题是: 我们如何让作曲家知道我们已经有了这个包,因此作曲家不会再次重新下载该包?或者这是作曲家的行为,我必须始终使用“composer install / update”,没有别的办法吗?

  

抱歉,换到另一个wifi或找到更快的互联网连接真的不是我想要的。我也知道我们可以在本地安装软件包(参见这里:How to update a single composer package?)。

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果我们不想使用repositories

据我所知,唯一的选择是更新你composer.json和composer.lock。朋友给你1.2版供应商?准确写入composer.jsoncomposer.lock中的版本,您也需要来自朋友的数据。

然后运行安装。

应检查,但不下载任何文件。问题是,这个库所需的所有库都可以更新 - 你只能在文件中写下它们的确切版本。

默认情况下,我认为,并没有预测出这种情况。

这是唯一适合您的解决方案,我知道应该可行。

答案 1 :(得分:0)

Composer确实大量使用缓存来减少要下载的数据量。但是,这并不需要至少下载一次包。

基本上,Composer有两种下载模式:--prefer-dist将尝试获取存档文件的下载URL,--prefer-source将尝试获取正在使用的版本控制系统的副本。

两种变体都将结果放入Composer的缓存目录中。

随着时间的推移,您将在本地收集几个存档文件,这样可以在现有版本下载之间来回快速切换,而新版本则必须下载一次。

此外,您可以克隆一次git存储库,并且Composer将在更新时尝试重用它,只需获取新提交并签出相应的标记即可。这仍然需要克隆一次存储库。

您可以通过手动将其放置在正确的位置来克隆存储库,方法是将其物理放置在那里,或者通过符号链接正确的供应商目录。您还可以通过将本地副本添加为repositories的条目,使Composer知道正式副本。这会将此源添加到Packagist提供的现有软件包集合中。