Composer ile tek bir kütüphane nasıl güncellenir?


311

SF2 dağıtımım için yalnızca 1 paket yüklemem gerekiyor (DoctrineFixtures).

Koştuğumda

php composer.phar update

alırım

  - Updating twig/twig (dev-master 39d94fa => v1.13.0)
    The package has modified files:
    M CHANGELOG
    M doc/filters/batch.test
    M doc/filters/index.rst
    M doc/filters/url_encode.rst
    M doc/functions/index.rst
    M doc/tags/index.rst
    M doc/tests/index.rst
    M lib/Twig/Autoloader.php
    M lib/Twig/Compiler.php
    M lib/Twig/CompilerInterface.php
-10 more files modified, choose "v" to view the full list

Son geliştirici, satıcı içinde birçok dosyayı düzenledi.

Bunu aşmak için denedim

php composer.phar update <package_name>

Ama bu işe yaramıyor gibi görünüyor. Composer.json sitesinden yalnızca bir kitaplığı nasıl güncelleştirebilir / yükleyebilirim?


Doğru komutu kullanıyorsunuz. Bize gösterebilir misin composer.json?
cheesemacfly

lütfen cevabımda verilen komutları deneyin, aksi takdirde lütfen aldığınız hatanın bir açıklamasını veriniz (örneğin, besteci şikayet ederse besteci çıktısı)
Nicolai Fröhlich

Composer.json'unuz bir projenin alternatif bir çatalına başvurabilir.
iconoclast

Laravel projemde belirli bir bağımlılığı güncelledim ve açıkça yüklenecek bileşeni belirttim: besteci update laravelcollective / html. İşe yaramış gibiydi.
marko

Yanıtlar:


526

doctrine/doctrine-fixtures-bundleSürüm 2.1.*ve minimum kararlılıkla yüklemek için şunu @devkullanın:

composer.phar require doctrine/doctrine-fixtures-bundle:2.1.*@dev

yalnızca bu tek paketi güncellemek için:

composer.phar update doctrine/doctrine-fixtures-bundle

9
Yararlı olabilir: -vvv (ayrıntılı mod: composer.phar update -vvv package / package) ile güncelleme / yükleme çalıştırmak bazen daha iyi olabilir, çünkü bazen gizli olabilecek etkileşimli bir istem görünecektir
timhc22

1
Diğer paketlerde hata varsa ne olur? (Benim durumumda kurulum durdu).
Thomas Decaux

2
Gereksinim farklı bir paketin güncellenmesini tetikliyorsa ne olacak?
hakre

1
tam olarak ne bilmek istersin? daha spesifik olabilir misin lütfen? Komutu requireçalıştırırken açıkça veya daha önce bağımlılık olarak indirilen başka bir paketin otomatik olarak güncellenip güncellenmeyeceğini bilmek ister misiniz composer require <package>:<version-constraint>@<stability-flag>?
Nicolai Fröhlich

7
> composer.phar update doctrine / doctrine-fikstürleri-bundle Bu güncelleme diğer tüm paketleri de (((
podarok

184

Sadece birkaç paketi güncellemek istiyorsanız, hepsini değil, bunları şu şekilde listeleyebilirsiniz:

php composer.phar update vendor/package:2.* vendor/package2:dev-master

Ayrıca, bir grup paketi bir kerede güncellemek için joker karakterler kullanabilirsiniz:

php composer.phar update vendor/*
  • --prefer-source : Mümkünsource olduğunda paketleri yükleyin .
  • --prefer-dist : distMevcut olduğunda paketleri yükleyin .
  • --ignore platform-Reqs : görmezden php, hhvm, lib-*ve ext-*gereksinimleri ve yerel makine bunlar yerine getirmemesi bile yüklemeyi zorlar. Ayrıca platform yapılandırma seçeneğine de bakın .
  • --dry-run : Aslında hiçbir şey yapmadan komutu simüle eder.
  • --dev : Listede listelenen paketleri yükleyin require-dev(bu varsayılan davranıştır).
  • --no-dev : içinde listelenen paketleri atla require-dev. Otomatik yükleyici üretimi autoload-devkuralları atlar .
  • --no-autoloader : Otomatik yükleyici üretimini atlar.
  • --no-scripts : composer.json dosyasında tanımlanan komut dosyalarının yürütülmesini atlar.
  • --no-plugins : Eklentileri devre dışı bırakır.
  • --no-progress : Geri silme karakterlerini işlemeyen bazı terminaller veya komut dosyalarıyla karışabilen ilerleme ekranını kaldırır.
  • --optimize-otomatik yükleyici (-o) : Daha hızlı bir otomatik yükleyici elde etmek için PSR-0/4 otomatik yüklemeyi sınıf haritasına dönüştürün. Bu, özellikle üretim için önerilir, ancak çalışması biraz zaman alabilir, bu nedenle şu anda varsayılan olarak yapılmamaktadır.
  • --lock : Kilit dosyası karmasını yalnızca kilit dosyasının güncel olmadığı uyarısını bastırmak için günceller.
  • --with bağımlılıkları : Beyaz listeye eklenen paketlerin tüm bağımlılıklarını da beyaz listeye ekleyin.
  • --prefer-stabil : Bağımlılıkların kararlı sürümlerini tercih edin.
  • --prefer-low : Bağımlılıkların en düşük sürümlerini tercih edin. Genellikle kullanılan gereksinimlerin minimum sürümlerini test etmek için kullanışlıdır --prefer-stable.

Lütfen ZSH kullanıcılarının vendor/*tırnak içine almaları gerekebileceğini unutmayın :composer update "vendor/*"
ZeroThe2nd

51

Yükleme, güncelleme ve gereksinim arasındaki fark

Aşağıdaki senaryoyu varsayalım:

composer.json

"parsecsv/php-parsecsv": "0.*"

composer.lock dosyası

  "name": "parsecsv/php-parsecsv",
            "version": "0.1.4",

En son sürüm 1.1.0. En son 0.*sürüm0.3.2

Yüklemek: composer install parsecsv/php-parsecsv

Bu 0.1.4, kilit dosyasında belirtilen sürümü yükler

Güncelleme: composer update parsecsv/php-parsecsv

Bu paketi güncelleyecektir 0.3.2. Composer.json ile ilgili en yüksek sürüm. İçindeki giriş composer.lockgüncellenecektir.

gerektirir: composer require parsecsv/php-parsecsv

Bu, en yeni sürümü güncelleyecek veya yükleyecektir 1.1.0. Kişisel composer.lockdosya ve composer.jsondosya kuyunun olarak güncellenecektir.


harika, bu yüzden kısıtlı sürüm içinde bir paketi yenilemek için composer update author/packageve sonracomposer install author/package
William Randokun

@WilliamRandokun daha önce kurduysanız, o zaman composer update packageyeterlidir, ondan sonra kurulum çağırmaya gerek yoktur
Adam

1
tam olarak aradığım şey. iyi açıkladı. upvoted
kapitan

14

Temel olarak yeni paket yüklemek için aşağıdakileri yapabilirsiniz.

php composer.phar require

terminal, arama için paketin adını girmenizi ister.

$ Search for a package []: //Your package name here

Daha sonra terminal paketin sürümünü soracaktır (En son sürüme sahip olmak istiyorsanız sadece boş bırakın)

$ Enter the version constraint to require (or leave blank to use the latest version) []: //your version number here

Sonra geri dönüş tuşuna basmanız yeterlidir. Terminal başka bir paket isteyecektir, eğer başka bir tane kurmak istemiyorsanız dönüş tuşuna basmanız yeterlidir.


6

Herhangi bir modülü bağımlılıklarıyla güncellemek için aşağıdaki komutu kullanabilirsiniz

composer update vendor-name/module-name --with-dependencies

5

Composer.json içinde ayarladığınız sürüm kısıtlamaları dahilinde zaten yüklü olan bir paketin son sürüme güncellenmesini sağlamak için paketi satıcıdan kaldırın ve yürütün:

php composer.phar update vendor/package

4
Aynı öneriyi bu yayında bulacaksınız: github.com/composer/composer/issues/3112 . Not: Açıklama yapmadan oy kullanmak çok kolay ve işe yaramaz.
Tsounabe

5

Sadece kullan

composer require {package/packagename}

sevmek

composer require phpmailer/phpmailer

paket satıcı klasöründe değilse .. composer yükleyin ve paket varsa composer güncelleme paketi son sürüme.


2

Belirli bir paket yüklemek istediğiniz için "SF2 dağıtımım (DoctrineFixtures) için yalnızca 1 paket yüklemem gerekiyor."

php composer.phar require package/package-name:package-version Yeterli olacaktır

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.