композитор: Як знайти точну версію пакету?


103

Припустимо, я пишу бібліотеку A, що залежить від іншої бібліотеки, наприклад, монології.

Я хочу встановити останню версію монології, тому я просто помістив її всередині composer.json:

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

Тоді я біжу $ php composer.phar install.

Я сподівався знайти встановлену версію всередині composer.lock, але її там немає:

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

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

    ]
}

Версія мені потрібна, тому що я хочу прив’язати свою бібліотеку до певного набору версій, наприклад: Якщо я знайду версію 1.3.5, у своєму composer.json я хотів би поставити щось подібне:

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

Якісь ідеї?

Відповіді:


170

Я знаю, що це старе питання, але ...

composer.phar show

Буде показано всі встановлені пакети та інформація про їх версію. (Це було показано в попередніх версіях Composer лише тоді, коли використовується устарений -iваріант.)

Щоб побачити більше деталей, вкажіть також назву пакета:

composer.phar show monolog/monolog

Це покаже багато речей, зокрема ввести хеш MD5, вихідну URL-адресу, тип ліцензії тощо.


11
php composer.phar show -aа php composer.phar show package/nameтакож є корисними.
єпископ

1
Для dev-masterпакетів це корисно, оскільки він також показує хеш фіксації. Тож вам потрібно перейти до GitHub, знайти цей фіш хеш, перевірити дату, а потім знайти тег із найближчою датою до цього, щоб дійсно дізнатися, яку "версію" ви використовуєте
andrewtweber

2
його також можна знайти у файлі composer.lock.
Хафіз


14

Якщо ви просто зацікавлені отримати вихід у вигляді версії пакета, наприклад: 1.7.5 або 1.x-dev або dev-master .

Фрагмент консолі Linux:

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

5

Технічно "dev-master" - це точна версія, яку ви закінчили там використовувати. Це галузь розвитку, а отже, і сама остання версія.

Найкраще шукати доступні версії для композиторських пакетів - Packagist, оскільки саме там місце завантажує версії, коли встановлюється пакет. Версії монологів перелічені на http://packagist.org/packages/monolog/monolog .


2

Ви можете використовувати show all, особливо коли у вас не є файл package.json, отримати доступні пакети з packgist.org:

composer show "monolog/monolog" --all

Також ви можете вказати версії

composer show "monolog/monolog" 1.* --all
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.