我用composer安装了一个包,它作为依赖项安装了许多其他包。
现在我用composer remove packageauthor/packagename卸载了主包,但所有旧的依赖项都没有删除。我期望编写器清理并只保留根据composer.json及其依赖项所需的包。
composer remove packageauthor/packagename
composer.json
如何强制编写器清理并删除所有未使用的包?
事实上,这很简单。
composer update
将为您完成所有这些,但它也将更新其他包。
要删除一个包而不更新其他包,请在命令中指定该包,例如:
composer update monolog/monolog
将删除monolog/monolog包。
monolog/monolog
尽管如此,仍然可能存在一些不能自动删除的空文件夹或文件,而必须手动删除。
正确的做法是:
composer remove jenssegers/mongodb --update-with-dependencies
我必须承认,旗帜在这里不是很明显,因为它将做什么。
composer remove jenssegers/mongodb
从v1.0.0-beta2开始,--update-with-dependencies是默认值,不再需要。
--update-with-dependencies
只需运行composer install -它将使你的vendor目录反映composer.lock文件中的依赖项。
composer install
vendor
composer.lock
换句话说——它将删除composer.lock中缺少的任何供应商。
在运行之前,请更新编写器本身。
下面的命令可以很好地做到这一点
rm -rf vendor composer install