我知道我们总是可以通过命令安装包:
composer require packageA
但我不知道你们有没有这样的情况:
你想安装你的队友添加到composer.json的大尺寸软件包“packageB”,你的wifi很慢,因此编写器需要很长时间才能获得packageB。然后你有了一个想法:
“也许我尝试通过闪存驱动器从我的队友那里获得packageB zip并粘贴 它进入我的项目。“
你做到了,这个包按预期工作。精彩! 但是,你再想一想:
如果现在我想让作曲家更新我的其他软件包怎么办? 项目
你试试:
composer update
然后,会发生什么事情,作曲家将再次获得该包,因为您没有使用“composer install”或“composer update”来安装packageB,因此作曲家不知道你拥有它。
(很抱歉很长的解释)。 所以我的问题是: 我们如何让作曲家知道我们已经有了这个包,因此作曲家不会再次重新下载该包?或者这是作曲家的行为,我必须始终使用“composer install / update”,没有别的办法吗?
抱歉,换到另一个wifi或找到更快的互联网连接真的不是我想要的。我也知道我们可以在本地安装软件包(参见这里:How to update a single composer package?)。
提前致谢!
答案 0 :(得分:1)
如果我们不想使用repositories
。
据我所知,唯一的选择是更新你composer.json
和composer.lock。朋友给你1.2版供应商?准确写入composer.json
和composer.lock
中的版本,您也需要来自朋友的数据。
然后运行安装。
应检查,但不下载任何文件。问题是,这个库所需的所有库都可以更新 - 你只能在文件中写下它们的确切版本。
默认情况下,我认为,并没有预测出这种情况。
这是唯一适合您的解决方案,我知道应该可行。
答案 1 :(得分:0)
Composer确实大量使用缓存来减少要下载的数据量。但是,这并不需要至少下载一次包。
基本上,Composer有两种下载模式:--prefer-dist
将尝试获取存档文件的下载URL,--prefer-source
将尝试获取正在使用的版本控制系统的副本。
两种变体都将结果放入Composer的缓存目录中。
随着时间的推移,您将在本地收集几个存档文件,这样可以在现有版本下载之间来回快速切换,而新版本则必须下载一次。
此外,您可以克隆一次git存储库,并且Composer将在更新时尝试重用它,只需获取新提交并签出相应的标记即可。这仍然需要克隆一次存储库。
您可以通过手动将其放置在正确的位置来克隆存储库,方法是将其物理放置在那里,或者通过符号链接正确的供应商目录。您还可以通过将本地副本添加为repositories
的条目,使Composer知道正式副本。这会将此源添加到Packagist提供的现有软件包集合中。