Besteciden kullanılmayan bağımlılıklar nasıl kaldırılır?


209

Bestecili bir paket kurdum ve bağımlılık olarak birçok paket yükledim.

Şimdi ana paketi ile kaldırdım composer remove packageauthor/packagename, ancak tüm eski bağımlılıklar kaldırılmadı. Bestecinin yalnızca composer.jsonbağımlı paketleri ve bağımlılıklarına göre gerekli olan paketleri temizlemesini ve saklamasını bekledim .

Besteciyi kullanılmayan tüm paketleri temizlemeye ve çıkarmaya nasıl zorlayabilirim?

Yanıtlar:


375

Bunu yapmanın doğru yolu:

composer remove jenssegers/mongodb --update-with-dependencies

İtiraf etmeliyim ki burada bayrak ne yapacağına dair çok açık değil.

Güncelleme

composer remove jenssegers/mongodb

İtibariyle v1.0.0-beta2 --update-with-dependencies varsayılan ve artık gereklidir.


@Yehosef'e, bir çözümün sağlandığı github ile ilgili sorunu başlattığı için teşekkürler, ancak cevabını güncellemediğinden, herkesin rahatlığı için kendi yazımı yazmaya karar verdim
— Denis Pshenov

Teşekkürler, tartışmalarının sonuna gelmedim.
— Lorenz Meyer

3
Unutulmaması gereken bir şey var: Eğer bu soruya rastlayana kadar composer remove …, zaten unuttuysanız --update-with-dependencies- sonraki çağrılar composer removetüm bağımlılıkları öldürmeyecektir. Daha installsonra geri dönmelisin, besteci , o zamancomposer remove --update-with-dependencies
— Mike G

Şimdi aşağıdaki mesajı alıyorum:You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies
— Pathros

4
Bir paket çıkarıldıktan sonra temizlemeye ne dersiniz? - @LorenzMeyer cevabı burada devreye girer: composer update@LorenzMeyer için bu cevaba kadar başparmak
— Allen Linatoc

29

Aslında, çok kolaydır.

composer update

tüm bunları sizin için yapacak, ancak diğer paketleri de güncelleyecektir.

Diğerlerini güncellemeden bir paketi kaldırmak için komutta o paketi belirtin, örneğin:

composer update monolog/monolog

monolog/monologpaketi kaldıracak .

Bununla birlikte, otomatik olarak kaldırılamayan ve el ile kaldırılması gereken bazı boş klasörler veya dosyalar kalabilir.


8
bunun talihsiz yanı, sadece eski sürümleri kaldırmak yerine paketlerinizi güncellemeye zorlamasıdır. Örneğin, iki paket AAA / aaa ~ 1 ve sürüm BBB / bbb ~ 2 varsa ve şu anda AAA / aaa'nın 1.0 sürümündeyim ve 1.1 yayınladılar, sonra BBB / bbb sildiğimde otomatik olarak güncellenirim ( istediğim gibi ol ..)
— Yehosef

Haklısın. Daha iyi bir çözümünüz varsa, geri dönün ve bir cevap olarak gönderin.
— Lorenz Meyer

3
Henüz yapmadım - sadece başkaları için bu yaklaşımın bir tuzağına dikkat çekmek istiyorum.
— Yehosef

gerçekten besteci yüklemesinde bir bayrak olmalı .. gibi bir şey--prune
— Yehosef


20

aşağıdaki komutlar aynı şeyi mükemmel şekilde yapar

rm -rf vendor

composer install 

2
Bu en temiz seçenek gibi görünüyor. Satıcılar dizinini silin ve Composer'ın her şeyi yeni çekmesine izin verin.
— Machavity

4
Bu npm "benim günümü kurtarmak" tarzı;)
— r34

composer installkullanılmayan paketleri otomatik olarak silecektir
— Yidir

10

Sadece çalıştırın composer install- vendordizininizin bağımlılıkları yansıtmasını sağlarcomposer.lock dosyadaki .

Başka bir deyişle - eksik olan satıcıları silecektir. composer.lock .

Lütfen bunu çalıştırmadan önce bestecinin kendisini güncelleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.