如何强制编写器重新安装库?

我正在使用 ZF2的骨骼应用程序,它有一个。阻止外部库提交到 git 的 gitignore。在调试的时候,我喜欢在库的源代码中到处修改一些东西,以了解它们是如何工作的。如果这些是版本控制的,那么很容易将它们恢复到原来的状态。

我如何强制 Composer 重新安装一个特定的框架,这样我就可以再次获得一个全新的、未修改的副本?

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

这同样适用于 Laravel 框架: 它也忽略了供应商文件夹。

243315 次浏览

您可以使用 --prefer-source标志(如果有的话)为编写器签出带有 VCS 信息的外部包。您可以简单地恢复到原始状态。此外,如果您发出 composer update命令编写器将检测您在本地所做的任何更改,并询问是否要放弃它们。

你的。Gitignore 文件与您的根项目(ZF2框架)相关,它阻止供应商 dir (您的第三方库所在的位置)提交到您自己的 VCS。忽略文件与供应商的 git 回购无关。

首先执行 composer clearcache

然后清除您的供应商文件夹

rm -rf vendor/*

或者更好的方法是删除特定的模块,这样可以避免重新下载。

我所做的:

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

它再次获取库以及它的 git 回购

我不想删除 vendor/目录中的所有包,所以我是这样做的:

  1. rm -rf vendor/package-i-messed-up
  2. 又是 composer install

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

也就是说。

composer require vendor/package

或指定版本约束

composer require vendor/package:^1.0.0

重新安装依赖项。删除 Linux 上的供应商文件夹(手动)或通过 rm 命令(如果您在项目文件夹中,当然可以) ,然后:

rm -rf vendor/


composer update -v

Https://www.dev-metal.com/composer-problems-try-full-reset/

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

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

请注意 这个命令将安装软件包的最新版本。如果你使用的是旧版本的软件包,而且软件包没有向下兼容,这将导致刹车版本的兼容性。你可以考虑先备份你的 composer.json

长话短说

您可以使用 & & 在一个 cli 命令中执行它:

composer remove vendor/package && composer require vendor/package:version

详细的回答

通过命令删除现有软件包:

composer remove vendor/package

这将删除包的文件夹从/供应商,行从 Composer.json 和包的整个记录从 Composer.lock 正确的方式,删除没有使用的依赖项,而不是删除依赖项使用的其他包

然后使用命令安装首选程序:

composer require vendor/package:version

这将以正确的方式安装带有所需版本的包,将 row 添加到 comper.json,将 record 添加到 comper.lock 和所有需要的依赖包 如果有一个软件包可以在多个软件包中使用,作曲家 将尝试安装适合所有使用软件包的版本。如果它不解决这个问题,它将崩溃,并出现相应的错误消息

连结

如何使用 Composer 安装特定版本的软件包?

如何删除一个包从 Laravel 使用作曲家?

使用 Composer: https://modulesunraveled.com/drupal-8-composer-and-configuration-management/installing-and-uninstalling-modules-composer安装、卸载和更新模块主题等

相关的功能要求是 https://github.com/composer/composer/issues/3112

在2021-05年,“重新安装”命令补丁被合并了: https://github.com/composer/composer/pull/9915-它可以在编写器版本2.1.0和所有后来的版本中使用。


2.1.0以来,reinstall命令被合并并且可用:

composer reinstall <package-name> # Removes and installs the package.

因为 作曲家2.1你可以做

composer reinstall vendor/package

https://getcomposer.org/doc/03-cli.md#reinstall

2022年
可以使用 composer status列出已更改的库。
然后 composer resinstall vendor/package覆盖更改。

这不会像使用 composer requirecomposer install的解决方案那样更改已安装库的版本。