compositor: ¿Cómo encontrar la versión exacta de un paquete?

103

Supongamos que estoy escribiendo una biblioteca A, que depende de otra biblioteca, monolog, por ejemplo.

Quiero instalar la última versión de monolog, así que solo puse esto dentro de composer.json:

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

Luego corro $ php composer.phar install.

Esperaba encontrar la versión instalada, dentro de composer.lock, pero no está allí:

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

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

    ]
}

Necesito la versión porque quiero vincular mi biblioteca a un conjunto específico de versiones, por ejemplo: Si encuentro que la versión es 1.3.5, en mi composer.json me gustaría poner algo como esto:

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

¿Algunas ideas?

HappyDesarrollador
fuente

Respuestas:

170

Sé que es una vieja pregunta, pero ...

composer.phar show

Mostrará todos los paquetes instalados actualmente y su información de versión. (Esto se mostró en versiones anteriores de Composer solo cuando se usaba la -iopción ahora obsoleta ).

Para ver más detalles, especifique también el nombre del paquete:

composer.phar show monolog/monolog

Eso mostrará muchas cosas, incluida la confirmación del hash MD5, la URL de origen, el tipo de licencia, etc.

Ross Deane
fuente
11
php composer.phar show -ay php composer.phar show package/nametambién son útiles.
obispo
1
Para los dev-masterpaquetes, esto es útil, porque también muestra el hash de confirmación. Por lo tanto, debe ir a GitHub, encontrar ese hash de confirmación, verificar la fecha y luego encontrar la etiqueta con la fecha más cercana antes de eso, para averiguar realmente qué "versión" está usando
andrewtweber
2
también se puede encontrar en el archivo composer.lock.
Hafiz
41

Puedes usar composer show como este:

composer show package/name
Kévin Ferradj
fuente
13

Si solo está interesado en obtener el resultado como el número de versión del paquete, como: 1.7.5 o 1.x-dev o dev-master .

Fragmento de la consola de Linux:

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

Técnicamente, "dev-master" es la versión exacta que terminaste usando allí. Es la rama de desarrollo y, por tanto, la última versión.

El mejor lugar para buscar versiones disponibles para los paquetes de Composer es Packagist, ya que ese es el lugar desde donde Composer carga las versiones cuando instala los paquetes. Las versiones de monolog se enumeran en http://packagist.org/packages/monolog/monolog .

naderman
fuente
2

Puede usar show all, especialmente cuando no tiene el archivo package.json, obtenga los paquetes disponibles en packagist.org:

composer show "monolog/monolog" --all

También puede especificar versiones

composer show "monolog/monolog" 1.* --all
Mohsen
fuente