情况
假设我有一个由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 /依赖注入
> 2.5.9 symfony / filesystem
几天后,发布了squizlabs / php_codesniffer版本2.1.0,但我不想
要运行更新。我现在要保持2.0.0版本,也许我会在几天内运行更新。
问题
我现在想从我的项目中删除phpmd / phpmd。我想要实现以下几点:
>从composer.json中删除phpmd / phpmd
>从composer.lock中删除phpmd / phpmd
>从供应商文件夹中删除phpmd / phpmd
>从composer.lock中删除phpmd / phpmd的所有依赖项
>从供应商文件夹中删除phpmd / phpmd的所有依赖项
>不要将squizlabs / php_codesniffer更新到2.1.0版本
编辑:我更喜欢一个不需要更改的解决方案
composer.json中的squizlabs / php_codesniffer的版本限制
我试过了
如果我跑:
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。