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