如何强制作曲家重新安装库?


95

我正在使用ZF2骨架应用程序,它具有一个.gitignore,可以防止将外部库提交给git。在调试时,我喜欢去库的源代码中的各处更改内容,以了解它们的工作方式。如果这些是受版本控制的,则将它们恢复到原始状态非常容易。

如何强制Composer重新安装特定的框架,以便可以再次获得全新的-unmodified-副本?

PS:请不要建议删除.gitignore文件,因为它存在是有原因的;这样可以防止我的第三方库进入我的应用程序存储库。我总是可以在自动部署期间安装它们。


2
一种选择是删除composer.lock,然后运行composer install
vascowhite

Answers:


48

您可以使用--prefer-source作曲家使用标志来检查带有VCS信息的外部软件包(如果有)。您可以简单地恢复到原始状态。同样,如果您发出composer update命令,编辑器也会检测到您在本地所做的任何更改,并询问是否要放弃它们。

您的.gitignore文件与您的根项目(ZF2框架)相关,它可防止供应商目录(您的第三方库所在的目录)提交到您自己的VCS。忽略文件与供应商的git repo无关。


7
最初,您的-prefer-source建议不起作用,直到我意识到必须删除并重新安装所有库才能使它按预期工作,然后composer status -v将更改信息提供给我。
朱利安

162

只需清除您的供应商文件夹

rm -rf vendor/*

@Loenix,将其解锁。
半停

7
我曾经遇到过本地缓存损坏的情况,因此即使删除了供应商目录后,我仍然会重新安装损坏的依赖项。composer clearcache在这种情况下是一个很好的补充。
okdewit

3
考虑到当OP仅需要重新安装一个软件包时,作曲家然后需要重新安装所有软件包,这似乎是一种非常激进的方法。composer require vendor/package将在短时间内完成OP想要的操作。如此之多的投票结果让我感到惊讶。
frederickjh

如果composer clearcache无法正常工作,则可以删除/ home / [用户名] /。cache目录。这将强制重新下载。如果您除了使用packagist.composer.org之外还使用私有作曲家packagist,并且有人在不添加新标签的情况下进行更改,该功能将非常有用。
尼尔戴维斯

2
Composer不一定只安装在供应商目录中,因此即使是繁琐的方法,它也并非在所有情况下都有效。
ummdorian

35

我不想删除vendor/目录中的所有软件包,所以这是我的操作方法:

  1. rm -rf vendor/package-i-messed-up
  2. composer install 再次

4
或“撰写者要求卖方/包装件已
弄清

1
如果这样不起作用,则可能composer clearcache首先运行,以防由于某种原因导致缓存损坏。
肖恩·比恩

26

我做了什么:

  1. 删除该特定库的文件夹
  2. composer update --prefer-source vendor/library-name

它再次与git repo一起获取库


如果这样不起作用,则可能composer clearcache首先运行,以防由于某种原因导致缓存损坏。
肖恩·比恩


3

正如用户@aaracrr在对另一个答案的评论中指出的那样,最好的答案可能是重新请求具有相同版本约束的软件包。

即。

composer require vendor/package

或指定版本限制

composer require vendor/package:^1.0.0

1

出于某种原因,没有人建议强制重新安装的最明显,最直接的方法:

> composer remove vendor-name/package-name && composer vendor-name/package-name

对我来说像魅力一样工作,谢谢:)
Gucu112
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.