composer: Comment trouver la version exacte d'un package?

103

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, donc je viens de mettre ceci dans composer.json:

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

Puis je cours $ php composer.phar install.

Je m'attendais à trouver la version installée, dans 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 que la version est 1.3.5, dans mon composer.json je voudrais mettre quelque chose comme ceci:

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

Des idées?

HappyDeveloper
la source

Réponses:

170

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

composer.phar show

Affiche tous les packages actuellement installés et leurs informations de version. (Cela n'apparaissait dans les versions précédentes de Composer que lors de l'utilisation de l' -ioption désormais obsolète .)

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

composer.phar show monolog/monolog

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

Ross Deane
la source
11
php composer.phar show -aet php composer.phar show package/namesont également utiles.
évêque
1
Pour les dev-masterpackages, cela est utile, car il affiche également le hachage de validation. Vous devez donc aller sur GitHub, trouver ce hachage de validation, vérifier la date, puis trouver la balise avec la date la plus proche avant cela, pour vraiment savoir quelle "version" vous utilisez
andrewtweber
2
il peut également être trouvé dans le fichier composer.lock.
Hafiz
41

Vous pouvez utiliser un spectacle de compositeur comme ceci:

composer show package/name
Kévin Ferradj
la source
14

Si vous êtes simplement intéressé par la sortie en tant que numéro de version du package comme: 1.7.5 ou 1.x-dev ou dev-master .

Extrait de console Linux:

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

Techniquement, "dev-master" est la version exacte que vous avez fini par utiliser là-bas. C'est la branche de développement, et donc la toute dernière version.

Le meilleur endroit pour rechercher les versions disponibles pour les packages de composer est Packagist, car c'est là que composer charge les versions lorsque vous installez les packages. Les versions monolog sont répertoriées sur http://packagist.org/packages/monolog/monolog .

Naderman
la source
2

Vous pouvez utiliser show all, spécialement lorsque vous n'avez pas de fichier package.json, obtenir les packages disponibles sur packagist.org:

composer show "monolog/monolog" --all

Vous pouvez également spécifier des versions

composer show "monolog/monolog" 1.* --all
Mohsen
la source