情况
假设我有一个由 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
来自我的项目。我想达到以下几点:
- Delete
phpmd/phpmd
from composer.json
- Delete
phpmd/phpmd
from composer.lock
- Delete
phpmd/phpmd
来自vendor
folder
- 删除所有依赖
phpmd/phpmd
from composer.lock
- 删除所有依赖
phpmd/phpmd
来自vendor
folder
- 不更新
squizlabs/php_codesniffer
到版本2.1.0
Edit:我更喜欢一个不需要改变的解决方案
的版本约束squizlabs/php_codesniffer
in composer.json
我尝试过的
如果我运行:
php composer.phar remove phpmd/phpmd
这可以获得积分1, 2, 3, 6,但未获得积分4, 5.
的依赖关系phpmd/phpmd
留在composer.lock
和vendor
folder.
如果我运行:
php composer.phar remove phpmd/phpmd
php composer.phar update
这可以获得积分1, 2, 3, 4, 5,但没有达到目的6.
squizlabs/php_codesniffer
更新到版本2.1.0
.