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

104

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

Я хочу установить последнюю версию monolog, поэтому я просто поместил это в 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.*"
    }

Любые идеи?

HappyDeveloper
источник

Ответы:

174

Я знаю, что это старый вопрос, но ...

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.
Хафиз
42

Вы можете использовать шоу композитора следующим образом:

composer show package/name
Кевин Феррад
источник
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, получить доступные пакеты с packagist.org:

composer show "monolog/monolog" --all

Также вы можете указать версии

composer show "monolog/monolog" 1.* --all
Mohsen
источник