Situasi
Katakanlah saya memiliki proyek dengan dua paket yang dipasang oleh Komposer:
php composer.phar require 'squizlabs/php_codesniffer:~2.0' 'phpmd/phpmd:~2.1'
The autogenerated composer.json
file terlihat seperti ini:
{
"require": {
"squizlabs/php_codesniffer": "~2.0",
"phpmd/phpmd": "~2.1"
}
}
Di autogenerasi composer.lock
file, ada dua paket yang diminta:
2.0.0 squizlabs/php_codesniffer
2.1.3 phpmd/phpmd
dan juga empat dependensi phpmd/phpmd
:
2.0.4 pdepend/pdepend
2.5.9 symfony/config
2.5.9 symfony/dependency-injection
2.5.9 symfony/filesystem
Beberapa hari kemudian, squizlabs/php_codesniffer
versi 2.1.0
dilepaskan, tapi saya tidak mau
untuk berlari update
namun. Saya ingin tetap menggunakan versi 2.0.0
untuk saat ini, dan mungkin aku akan lari update
dalam beberapa hari.
Pertanyaan
Saya sekarang ingin menghapus phpmd/phpmd
dari proyek saya. Saya ingin mencapai poin-poin berikut:
- Menghapus
phpmd/phpmd
daricomposer.json
- Menghapus
phpmd/phpmd
daricomposer.lock
- Menghapus
phpmd/phpmd
darivendor
map - Hapus semua dependensi
phpmd/phpmd
daricomposer.lock
- Hapus semua dependensi
phpmd/phpmd
darivendor
map - Jangan perbarui
squizlabs/php_codesniffer
ke versi2.1.0
Edit: Saya lebih suka solusi yang tidak perlu mengubah
kendala versi squizlabs/php_codesniffer
di composer.json
Apa yang sudah saya coba
Jika saya menjalankan:
php composer.phar remove phpmd/phpmd
ini mencapai poin 1, 2, 3, 6, tetapi tidak mencapai poin 4, 5.
Ketergantungan dari phpmd/phpmd
tetap di composer.lock
dan vendor
map.
Jika saya menjalankan:
php composer.phar remove phpmd/phpmd
php composer.phar update
ini mencapai poin 1, 2, 3, 4, 5, tetapi tidak mencapai titik 6.
squizlabs/php_codesniffer
diperbarui ke versi 2.1.0
.