it-swarm.com.ru

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

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

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

Есть идеи?

81
HappyDeveloper

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

composer.phar show

Покажет все установленные на данный момент пакеты и информацию о их версии. (Это было показано в предыдущих версиях Composer только при использовании устаревшей опции -i.)

Чтобы увидеть более подробную информацию, укажите также название пакета:

composer.phar show monolog/monolog

Это покажет много вещей, включая коммит MD5 хеш, исходный URL, тип лицензии и т.д.

141
Ross Deane

Вы можете использовать composer как показано ниже:

composer show package/name
24
Kévin Ferradj

Если вам просто интересно получить вывод в виде номера версии пакета, например: 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
Jimmix

Это очень старый вопрос, но добавление ответа, чтобы он мог кому-то помочь, вы также можете проверить его в Интернете, загрузив файлы composer.josn и composer.lock.

http://www.drcomposer.com

Надеюсь, это может кому-то помочь.

2
Yogesh Salvi

Технически "dev-master" - это именно та версия, которую вы там использовали. Это ветка разработки, и, следовательно, самая последняя версия.

Лучшее место для поиска доступных версий пакетов composer - Packagist , поскольку именно здесь composer загружает версии при установке пакетов. Версии монологов перечислены в http://packagist.org/packages/monolog/monolog .

2
naderman

Может быть полезно для Laravel разработчиков, если вы хотите найти laravel/framework версию.
composer show laravel/framework может возвращать огромный список с другими зависимостями, например

name     : laravel/framework
...
versions : * v5.7.27
...
autoload
...
requires
...
requires (dev)
...
suggests
...
conflicts
...
replaces
...

Итак, используйте вместо этого composer show laravel/f*.
f* pattern будет искать все пакеты, начиная с "f".
Результат laravel/framework v5.7.27 The Laravel Framework.

1
Tarasovych