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.