Bagaimana cara memperbarui perpustakaan tunggal dengan Komposer?


312

Saya hanya perlu menginstal 1 paket untuk distribusi SF2 saya (DoctrineFixtures).

Ketika saya berlari

php composer.phar update

saya mendapat

  - 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

Tampaknya pengembang terakhir mengedit banyak file di dalam vendor.

Untuk menyiasati ini, saya mencoba

php composer.phar update <package_name>

Tapi itu sepertinya tidak berhasil. Bagaimana saya bisa memperbarui / menginstal hanya satu perpustakaan dari composer.json?


Anda menggunakan perintah yang tepat. Bisakah Anda menunjukkan kepada Anda milik Anda composer.json?
— cheesemacfly

silakan coba dengan perintah yang disediakan dalam jawaban saya jika tidak, harap berikan deskripsi kesalahan yang Anda dapatkan (yaitu, komposer keluaran jika komposer mengeluh)
— Nicolai Fröhlich

Komposer Anda. John mungkin merujuk pada garpu alternatif dari suatu proyek.
— iconoclast

Saya memperbarui ketergantungan khusus dalam proyek laravel saya dan menentukan komponen spesifik untuk menginstal secara eksplisit: komposer memperbarui laravelcollective / html. Itu sepertinya berhasil.
— marko

Jawaban:


527

Untuk menginstal doctrine/doctrine-fixtures-bundledengan versi 2.1.*dan stabilitas minimum @devgunakan ini:

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

kemudian perbarui hanya paket tunggal ini:

composer.phar update doctrine/doctrine-fixtures-bundle

9
Semoga bermanfaat: menjalankan pembaruan / instal dengan -vvv (mode verbose: pembaruan komperer.phar -vvv paket / paket) kadang-kadang bisa lebih baik karena kadang-kadang prompt interaktif akan muncul yang mungkin disembunyikan
— timhc22

1
Bagaimana jika ada kesalahan pada paket lain? (Dalam kasus saya instalasi berhenti).
— Thomas Decaux

2
Bagaimana dengan persyaratan memicu pembaruan dari paket yang berbeda?
— hakre

1
apa yang ingin kamu ketahui? dapatkah Anda menjadi lebih spesifik? Apakah Anda ingin tahu apakah itu bisa terjadi bahwa paket lain - secara eksplisit requiresebelum atau sebelumnya diunduh sebagai dependensi - akan secara otomatis diperbarui ketika menjalankan composer require <package>:<version-constraint>@<stability-flag>perintah?
— Nicolai Fröhlich

7
> composer.phar perbarui doctrine / doctrine-fixture-bundle ini memperbarui semua paket lain juga (((
— podarok

184

Jika Anda hanya ingin memperbarui beberapa paket dan tidak semua, Anda dapat mencantumkannya sebagai berikut:

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

Anda juga dapat menggunakan wildcard untuk memperbarui banyak paket sekaligus:

php composer.phar update vendor/*
  • --prefer-source : Instal paket dari sourcesaat tersedia.
  • --prefer-dist : Instal paket dari distsaat tersedia.
  • --ignore-platform-reqs : mengabaikan php, hhvm, lib-*dan ext-*persyaratan dan memaksa instalasi bahkan jika mesin lokal tidak memenuhi ini. Lihat juga platform opsi konfigurasi .
  • --dry-run : Simulasikan perintah tanpa benar-benar melakukan apa pun.
  • --dev : Instal paket yang terdaftar di require-dev(ini adalah perilaku default).
  • --no-dev : Lewati menginstal paket yang terdaftar di require-dev. Generasi autoloader mengabaikan autoload-devaturan.
  • --no-autoloader : Melewati pembuatan autoloader.
  • --no-scripts : Melewati eksekusi skrip yang didefinisikan dalam composer.json.
  • --no-plugins : Menonaktifkan plugin.
  • --no-progress : Menghapus tampilan progres yang dapat mengacaukan beberapa terminal atau skrip yang tidak menangani karakter backspace.
  • --optimize-autoloader (-o) : Konversi PSR-0/4 ke classmap untuk mendapatkan autoloader yang lebih cepat. Ini direkomendasikan terutama untuk produksi, tetapi dapat mengambil sedikit waktu untuk berjalan sehingga saat ini tidak dilakukan secara default.
  • --lock : Hanya memperbarui hash file kunci untuk menekan peringatan tentang file kunci yang kedaluwarsa.
  • --dengan-dependensi : Tambahkan juga semua dependensi paket yang masuk daftar putih ke daftar putih.
  • --prefer-stable : Memilih versi dependensi yang stabil.
  • --prefer-terendah : Memilih versi dependensi yang lebih rendah. Berguna untuk menguji versi persyaratan minimal, yang biasanya digunakan bersama --prefer-stable.

Harap dicatat bahwa pengguna ZSH mungkin perlu membungkus vendor/*tanda kutip mereka :composer update "vendor/*"
— ZeroThe2nd

51

Perbedaan antara menginstal, memperbarui dan membutuhkan

Asumsikan skenario berikut:

composer.json

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

file composer.lock

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

Rilis terbaru adalah 1.1.0. 0.*Rilis terbaru adalah0.3.2

Install: composer install parsecsv/php-parsecsv

Ini akan menginstal versi 0.1.4seperti yang ditentukan dalam file kunci

memperbarui: composer update parsecsv/php-parsecsv

Ini akan memperbarui paket ke 0.3.2. Versi tertinggi sehubungan dengan composer.json Anda. Entri composer.lockakan diperbarui.

memerlukan: composer require parsecsv/php-parsecsv

Ini akan memperbarui atau menginstal versi terbaru 1.1.0. Anda composer.lockberkas dan composer.jsonfile akan diperbarui juga.


luar biasa, jadi untuk menyegarkan satu paket dalam versi terbatas itu composer update author/packagedan kemudiancomposer install author/package
— William Randokun

@WilliamRandokun jika Anda telah menginstalnya sebelumnya, maka itu composer update packagesudah cukup, tidak perlu memanggil instal setelahnya
— Adam

1
persis apa yang saya cari. dijelaskan dengan baik. upvoted
— kapitan

15

Anda pada dasarnya dapat melakukan yang berikut untuk menginstal paket baru juga.

php composer.phar require

maka terminal akan meminta Anda untuk memasukkan nama paket untuk pencarian.

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

Kemudian terminal akan menanyakan versi paket (Jika Anda ingin versi terbaru biarkan kosong)

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

Kemudian Anda cukup menekan tombol kembali. Terminal akan meminta paket lain, jika Anda tidak ingin menginstal yang lain cukup tekan tombol kembali dan Anda akan selesai.


6

Anda dapat menggunakan perintah berikut untuk memperbarui modul apa pun dengan dependensinya

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

5

Untuk memastikan bahwa komposer memperbarui satu paket yang sudah diinstal ke versi terakhir dalam batasan versi yang Anda atur di composer.json hapus paket dari vendor dan kemudian jalankan:

php composer.phar update vendor/package

4
Anda akan menemukan saran yang sama di posting ini: github.com/composer/composer/issues/3112 . PS: Pemungutan suara tanpa penjelasan sangat mudah dilakukan dan tidak berguna.
— Tsounabe

5

Gunakan saja

composer require {package/packagename}

Suka

composer require phpmailer/phpmailer

jika paket tidak ada dalam folder vendor .. komposer memasangnya dan jika paket ada paket pembaruan komposer ke versi terakhir.


2

Karena Anda ingin menginstal paket tertentu "Saya hanya perlu menginstal 1 paket untuk distribusi SF2 saya (DoctrineFixtures)."

php composer.phar require package/package-name:package-version akan cukup

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.