komposer: Bagaimana menemukan versi yang tepat dari sebuah paket?

103

Misalkan saya sedang menulis perpustakaan A, yang bergantung pada perpustakaan lain, monolog misalnya.

Saya ingin menginstal versi terbaru dari monolog, jadi saya taruh saja di dalam composer.json:

{
    "require": {
        "monolog/monolog": "*.*.*"
    }
}

Lalu aku lari $ php composer.phar install.

Saya berharap menemukan versi yang diinstal, di dalam composer.lock, tetapi tidak ada:

{
    "hash": "d7bcc4fe544b4ef7561918a8fc6ce009",
    "packages": [
        {
            "package": "monolog/monolog",
            "version": "dev-master",
            "source-reference": "2eb0c0978d290a1c45346a1955188929cb4e5db7"
        }
    ],
    "packages-dev": null,
    "aliases": [

    ],
    "minimum-stability": "dev",
    "stability-flags": [

    ]
}

Saya memerlukan versinya karena saya ingin mengikat library saya ke sekumpulan versi tertentu, misalnya: Jika saya menemukan versinya adalah 1.3.5, di composer.json saya ingin meletakkan sesuatu seperti ini:

    "require": {
        "monolog/monolog": "1.3.*"
    }

Ada ide?

HappyDeveloper
sumber

Jawaban:

170

Saya tahu ini pertanyaan lama, tapi ...

composer.phar show

Akan menampilkan semua paket yang saat ini diinstal dan informasi versinya. (Ini ditunjukkan di Composer versi sebelumnya hanya saat menggunakan opsi yang sekarang tidak digunakan lagi -i.)

Untuk melihat lebih jelasnya, tentukan juga nama paketnya:

composer.phar show monolog/monolog

Itu akan menunjukkan banyak hal, termasuk melakukan hash MD5, URL sumber, jenis lisensi, dll.

Ross Deane
sumber
11
php composer.phar show -adan php composer.phar show package/namejuga membantu.
uskup
1
Untuk dev-masterpaket, ini berguna, karena ini juga menunjukkan hash komit. Jadi, Anda perlu pergi ke GitHub, temukan hash commit itu, periksa tanggalnya, lalu temukan tag dengan tanggal terdekat sebelumnya, untuk benar-benar mencari tahu "versi" apa yang Anda gunakan
andrewtweber
2
itu juga dapat ditemukan di file composer.lock.
Hafiz
41

Anda dapat menggunakan acara komposer seperti ini:

composer show package/name
Kévin Ferradj
sumber
13

Jika Anda hanya tertarik untuk mendapatkan keluaran sebagai nomor versi paket seperti: 1.7.5 atau 1.x-dev atau dev-master .

Cuplikan konsol Linux:

composer show 'monolog/monolog' | grep 'versions' | grep -o -E '\*\ .+' | cut -d' ' -f2 | cut -d',' -f1;
Jimmix
sumber
5

Secara teknis "dev-master" adalah versi persis yang akhirnya Anda gunakan di sana. Ini adalah cabang pengembangan, dan dengan demikian merupakan versi terbaru.

Tempat terbaik untuk mencari versi yang tersedia untuk paket komposer adalah Packagist karena di sanalah komposer memuat versi dari saat Anda menginstal paket. Versi monolog terdaftar di http://packagist.org/packages/monolog/monolog .

naderman.dll
sumber
2

Anda dapat menggunakan tampilkan semua, khususnya jika tidak memiliki file package.json, dapatkan paket yang tersedia dari packagist.org:

composer show "monolog/monolog" --all

Anda juga dapat menentukan versi

composer show "monolog/monolog" 1.* --all
Mohsen
sumber