Ситуация
Скажем, у меня есть проект с двумя пакетами, установленными 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.