【发布时间】:2015-01-11 21:26:09
【问题描述】:
我用 composer 安装了一个包,它还安装了许多其他包作为依赖项。
现在我用composer remove packageauthor/packagename 卸载了主包,但没有删除所有旧的依赖项。我希望作曲家清理并仅保留根据composer.json 及其依赖项所需的包。
如何强制作曲家清理并删除所有未使用的包?
【问题讨论】:
标签: php composer-php
我用 composer 安装了一个包,它还安装了许多其他包作为依赖项。
现在我用composer remove packageauthor/packagename 卸载了主包,但没有删除所有旧的依赖项。我希望作曲家清理并仅保留根据composer.json 及其依赖项所需的包。
如何强制作曲家清理并删除所有未使用的包?
【问题讨论】:
标签: php composer-php
正确的做法是:
composer remove jenssegers/mongodb --update-with-dependencies
我必须承认这里的标志对于它的作用并不是很明显。
composer remove jenssegers/mongodb
截至v1.0.0-beta2 --update-with-dependencies 是默认值,不再需要。
【讨论】:
composer remove …'d,但在您偶然发现这个问题之前忘记了 --update-with-dependencies - 随后对 composer remove 的调用不会杀死所有依赖项。您需要还原,作曲家install,然后是composer remove --update-with-dependencies
You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies
composer update 为@LorenzMeyer 的这个答案点赞
以下命令将完美地完成同样的操作
rm -rf vendor
composer install
【讨论】:
composer install 会自动删除未使用的包
只需运行composer install - 它将使您的vendor 目录反映composer.lock 文件中的依赖关系。
换句话说 - 它将删除 composer.lock 中缺少的任何供应商。
请在运行之前更新作曲家本身。
【讨论】:
其实很简单。
composer update
将为您完成所有这些工作,但它也会更新其他软件包。
要删除一个包而不更新其他包,请在命令中指定该包,例如:
composer update monolog/monolog
将删除 monolog/monolog 包。
尽管如此,仍有一些空文件夹或文件无法自动删除,必须手动删除。
【讨论】:
--prune