Composer:删除包,清理依赖项,不更新其他包
2022-08-30 09:01:55
情况
假设我有一个项目,其中包含 Composer 安装的两个包:
php composer.phar require 'squizlabs/php_codesniffer:~2.0' 'phpmd/phpmd:~2.1'
自动生成的文件如下所示:composer.json
{
"require": {
"squizlabs/php_codesniffer": "~2.0",
"phpmd/phpmd": "~2.1"
}
}
在自动生成的文件中,有两个请求的包:composer.lock
2.0.0 squizlabs/php_codesniffer
2.1.3 phpmd/phpmd
以及以下的四个依赖项:phpmd/phpmd
2.0.4 pdepend/pdepend
2.5.9 symfony/config
2.5.9 symfony/dependency-injection
2.5.9 symfony/filesystem
几天后,版本发布了,但我还不想运行。我现在想留在版本上,也许我会在几天内运行。squizlabs/php_codesniffer
2.1.0
update
2.0.0
update
问题
我现在想从我的项目中删除。我想实现以下几点:phpmd/phpmd
- 从中删除
phpmd/phpmd
composer.json
- 从中删除
phpmd/phpmd
composer.lock
- 从文件夹中删除
phpmd/phpmd
vendor
- 从 中删除 的所有依赖项
phpmd/phpmd
composer.lock
- 从文件夹中删除 的所有依赖项
phpmd/phpmd
vendor
- 不更新到版本
squizlabs/php_codesniffer
2.1.0
编辑:我更喜欢一个不需要更改 的版本约束的解决方案squizlabs/php_codesniffer
composer.json
我尝试了什么
如果我运行:
php composer.phar remove phpmd/phpmd
这达到了第1,2,3,6点,但没有达到第4,5点。
的依赖关系 保留在 和 文件夹。phpmd/phpmd
composer.lock
vendor
如果我运行:
php composer.phar remove phpmd/phpmd
php composer.phar update
这达到了第1,2,3,4,5点,但没有达到第6点。
squizlabs/php_codesniffer
更新到版本 。2.1.0