Besteciyi bir kitaplığı yeniden yüklemeye nasıl zorlayabilirim?


106

ZF2 iskelet uygulamasını kullanıyorum ve harici kitaplıkların git'e kaydedilmesini önleyen bir .gitignore'a sahip. Hata ayıklarken, işlerin nasıl yürüdüğünü öğrenmek için kütüphanelerin kaynağında gidip orada burada bir şeyler değiştirmeyi seviyorum. Bunlar sürüm kontrollü olsaydı, orijinal durumlarına geri döndürmek çok kolay olurdu.

Composer'ı belirli bir çerçeveyi yeniden yüklemeye nasıl zorlayabilirim, böylece yeniden yeni değiştirilmemiş bir kopya alabilirim?

Not: Lütfen .gitignore dosyasını kaldırmayı önermeyin, çünkü orada bir nedenle var; üçüncü taraf kitaplıklarımın uygulamamın havuzuna girmesini engelliyor. Bunları otomatik bir dağıtım sırasında her zaman kurabilirim.


2
Bir seçenek composer.lock'u silmek ve ardından composer install
vascowhite'ı

Yanıtlar:


50

--prefer-sourceVCS bilgileriyle (varsa) harici paketleri teslim almak için composer işaretini kullanabilirsiniz . Sadece orijinal durumuna geri dönebilirsiniz. Ayrıca, composer updatekomut düzenleyicisi , yerel olarak yaptığınız değişiklikleri algılar ve bunları atmak isteyip istemediğinizi sorar.

.Gitignore dosyanız kök projenizle (ZF2 iskeleti) ilişkilidir ve satıcı dizininin (üçüncü taraf kitaplıklarınızın bulunduğu yer) kendi VCS'nizi taahhüt etmesini engeller. Yoksay dosyası, satıcılarınızın git depolarıyla ilgisizdir.


7
Başlangıçta -prefer-kaynak öneriniz, bunun amaçladığım gibi çalışması için tüm kitaplıkları kaldırmam ve yeniden yüklemem gerektiğini fark edene ve ardından composer status -vbana değişikliklerle ilgili bilgileri verene kadar çalışmadı .
Julian

174

Satıcı klasörünüzü temizleyin

rm -rf vendor/*

@Loenix, kilidini aç.
Halfstop

8
Yerel önbelleğin bozulduğu durumlar oldu, bu nedenle satıcı dizinini sildikten sonra bile bozuk bir bağımlılığı yeniden yüklemeye devam ettim. composer clearcachebu gibi durumlarda iyi bir ektir.
okdewit

4
Bu, OP'nin yalnızca bir paketin yeniden yüklenmesi gerektiğinde, bestecinin tüm paketleri yeniden yüklemesi gerektiği düşünüldüğünde, çok radikal bir yaklaşım gibi görünüyor. composer require vendor/packageOP'nin istediğini ve daha az zamanda yapacak. Pek çok kişinin bu cevaba olumlu oy vermesine biraz şaşırdım.
frederickjh

Composer clearcache çalışmazsa /home/[username]/.cache dizinini silebilirsiniz. Bu, yeniden indirmeye zorlar. Packagist.composer.org'a ek olarak özel bir paket oluşturucu kullanıyorsanız ve birisi yeni bir etiket eklemeden değişiklikler yapıyorsa kullanışlıdır.
Neil Davis

2
Composer, yalnızca satıcı dizinine yüklenmek zorunda değildir, bu nedenle sert bir yaklaşım olsa bile her durumda çalışmaz.
ummdorian

39

vendor/Dizindeki tüm paketleri silmek istemedim , işte böyle yaptım:

  1. rm -rf vendor/package-i-messed-up
  2. composer install tekrar

5
veya 'besteci satıcı / paket-i-karışıklık istiyor' da iyi olur
aarcarr

1
Bu işe yaramazsa, composer clearcacheönbelleğin bir nedenden dolayı bozulması durumunda ilk önce çalıştırabilirsiniz .
Sean Bean

27

Ben ne yaptım:

  1. Söz konusu kitaplığın klasörünü sildi
  2. composer update --prefer-source vendor/library-name

Kitaplığı git deposu ile birlikte yeniden getirir


Bu işe yaramazsa, composer clearcacheönbelleğin bir nedenden dolayı bozulması durumunda ilk önce çalıştırabilirsiniz .
Sean Bean


3

@Aaracrr kullanıcısının başka bir cevapla ilgili bir yorumda belirttiği gibi, muhtemelen en iyi cevap, aynı sürüm kısıtlamasına sahip paketi yeniden talep etmektir.

yani.

composer require vendor/package

veya bir sürüm kısıtlaması belirtmek

composer require vendor/package:^1.0.0

2

Nedense hiç kimse yeniden yüklemeye zorlamanın bariz ve en basit yolunu önermedi:

> composer remove vendor-name/package-name && composer vendor-name/package-name
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.