web-dev-qa-db-fra.com

Compositeur: Comment trouver la version exacte d'un paquet?

Supposons que j'écris une bibliothèque A, qui dépend d'une autre bibliothèque, monolog par exemple.

Je veux installer la dernière version de monolog, je viens donc d'insérer ceci à l'intérieur de composer.json:

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

Puis je cours $ php composer.phar install.

Je m'attendais à trouver la version installée à l'intérieur de composer.lock, mais ce n'est pas là:

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

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

    ]
}

J'ai besoin de la version parce que je veux lier ma bibliothèque à un ensemble spécifique de versions, par exemple: Si je trouve la version 1.3.5, dans mon composer.json, j'aimerais mettre quelque chose comme ceci:

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

Des idées?

84
HappyDeveloper

Je sais que c'est une vieille question, mais ...

composer.phar show

Affiche tous les packages actuellement installés et leurs informations de version. (Ceci était indiqué dans les versions précédentes de Composer uniquement lors de l'utilisation de l'option -i Maintenant dépréciée.)

Pour plus de détails, spécifiez également le nom du paquet:

composer.phar show monolog/monolog

Cela montrera beaucoup de choses, y compris le hachage MD5 de commit, l'URL source, le type de licence, etc.

144
Ross Deane

Vous pouvez utiliser composer comme ceci:

composer show package/name
27
Kévin Ferradj

Si vous souhaitez simplement obtenir le résultat sous forme de numéro de version du package, comme: 1.7.5 ou 1.x-dev ou dev-master =.

Extrait de la console Linux:

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

C'est une question très ancienne, mais en ajoutant une réponse pour que cela puisse aider quelqu'un, vous pouvez aussi le vérifier en ligne en téléchargeant le fichier composer.josn et composer.lock

http://www.drcomposer.com

J'espère que cela peut aider quelqu'un.

2
Yogesh Salvi

Techniquement "dev-master" est la version exacte que vous avez utilisée ici. C'est la branche de développement, et donc la toute dernière version.

Le meilleur endroit pour rechercher les versions disponibles pour composer packages est Packagist puisque c'est l'endroit composer charge les versions à partir de l'installation Les versions de monolog sont listées sur http://packagist.org/packages/monolog/monolog .

2
naderman

Peut-être utile pour les développeurs Laravel, si vous voulez trouver laravel/framework version.
composer show laravel/framework pourrait retourner une liste énorme avec d’autres dépendances, comme

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

Alors, utilisez composer show laravel/f* au lieu.
f* pattern recherchera tous les paquets en commençant par "f".
Résultat laravel/framework v5.7.27 The Laravel Framework.

1
Tarasovych