Bagaimana cara menginstal versi paket tertentu menggunakan Komposer?

346

Saya mencoba menginstal versi tertentu dari suatu paket menggunakan Komposer. Saya mencoba composer installdan composer requiretetapi mereka menginstal versi terbaru dari paket. Bagaimana jika saya menginginkan versi yang lebih lama?

gdara
sumber
baca jawaban ini stackoverflow.com/questions/15212381/…
KevinOrfas

Jawaban:

110

Tambahkan tanda kutip ganda untuk menggunakan operator tanda sisipan di nomor versi.

composer require middlewares/whoops "^0.4"
Yoann Kergall
sumber
3
Saya tidak melihat titik waktu di mana Anda bisa memberikan nama paket dan versi sebagai dua argumen terpisah.
x-yuri
1
@ x-yuri menyampaikan nama dan versi paket sebagai argumen terpisah bekerja untuk saya menggunakan komposer 1.5.1
bryonbean
Meskipun secara teknis ini bukan jawaban "benar" untuk pertanyaan OP, ini mungkin lebih bermanfaat bagi kebanyakan orang.
Pengadilan Rich
19

cukup gunakan php composer.phar butuhkan

Sebagai contoh :

php composer.phar require doctrine/mongodb-odm-bundle 3.0

Juga tersedia dengan pemasangan.

https://getcomposer.org/doc/03-cli.md#require https://getcomposer.org/doc/03-cli.md#install

Aize
sumber
Sebagai catatan, menambahkan batasan khusus tidak tersedia dengan install- hanya dengan require. Jika Anda berharap untuk beralih ke versi tertentu dan check-in composer.lockfile Anda, Anda bisa, tetapi Anda harus menggunakan composer requiredan kemudian mengembalikan perubahan ke composer.jsonsesudahnya.
mindplay.dk
Versi sebagai argumen terpisah? Apakah itu pernah ada?
x-yuri
10

Seperti yang disebutkan @alucic, gunakan:

composer require vendor/package:version

atau Anda dapat menggunakan:

composer update vendor/package:version

Anda mungkin harus meninjau posting StackOverflow ini tentang perbedaan antara pemasangan komposer dan pembaruan komposer .

Terkait dengan pertanyaan tentang nomor versi, Anda dapat meninjau dokumentasi Komposer pada versi , tetapi singkatnya di sini:

  • Rentang Versi Tilde ( ~ ) - ~ 1.2.3 setara dengan> = 1.2.3 < 1.3.0
  • Rentang Versi Karet ( ^ ) - ^ 1.2.3 setara dengan> = 1.2.3 < 2.0.0

Jadi, dengan Tilde Anda akan mendapatkan pembaruan tambalan secara otomatis tetapi versi minor dan utama tidak akan diperbarui. Namun, jika Anda menggunakan Caret, Anda akan mendapatkan tambalan dan versi minor, tetapi Anda tidak akan mendapatkan versi utama (melanggar perubahan).

Versi Tilde dianggap sebagai pendekatan yang "lebih aman", tetapi jika Anda menggunakan dependensi yang dapat diandalkan (perpustakaan yang terpelihara dengan baik) Anda seharusnya tidak memiliki masalah dengan Versi Caret (karena perubahan kecil seharusnya tidak melanggar perubahan.

milan.latinovic
sumber
5

Misalkan Anda ingin menginstal Laravel Collective. Saat ini di versi 6.x tetapi Anda ingin versi 5.8. Anda dapat menjalankan perintah berikut:

composer require "laravelcollective/html":"^5.8.0"

Contoh yang baik ditunjukkan di sini dalam dokumentasi: https://laravelcollective.com/docs/5.5/html

Jay LampStack
sumber
0

Di Anda composer.json, Anda dapat menempatkan:

{
    "require": {
        "vendor/package": "version"
    }
}

kemudian jalankan composer installatau composer updatedari direktori yang berisi composer.json. Kadang-kadang, bagi saya, komposer itu hinky, jadi saya akan mulai dengan composer clear-cache; rm -rf vendor; rm composer.locksebelumnya composer installuntuk memastikan itu mendapatkan barang segar.


Tentu saja, seperti yang ditunjukkan oleh jawaban lain, Anda dapat menjalankan yang berikut dari terminal:

composer require vendor/package:version

Dan pada versi:
- Artikel versi resmi Komposer
- Pencarian Ecosia

Reed
sumber