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

3 minutos de lectura

avatar de usuario
HappyDeveloper

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 simplemente coloco esto dentro de composer.json:

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

entonces 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?

  • Un consejo algo relacionado con esta pregunta: si está usando PhpStorm como su IDE, cualquier composer.json los archivos le mostrarán junto a cada dependencia la versión real que ha instalado.

    – BadHorsie

    1 de marzo a las 13:40

avatar de usuario
ross deane

Sé que es una vieja pregunta, pero…

composer.phar show

Mostrará todos los paquetes actualmente instalados y su información de versión. (Esto se mostraba en versiones anteriores de Composer solo cuando se usaba el ahora obsoleto -i opción.)

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

composer.phar show monolog/monolog

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

  • php composer.phar show -a y php composer.phar show package/name ambos también son útiles.

    – obispo

    26 de agosto de 2014 a las 1:04

  • Para dev-master paquetes, 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

    – andrewtwweber

    03/02/2016 a las 19:39

  • también se puede encontrar en el archivo composer.lock.

    – Hafiz

    8 de junio de 2017 a las 13:48

avatar de usuario
Kevin Ferraj

Puedes usar un programa de composición como este:

composer show package/name

avatar de usuario
jimmix

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 maestro de desarrollo.

Fragmento de consola de Linux (compositor y sed):

composer show 'monolog/monolog' | sed -n '/versions/s/^[^0-9]\+\([^,]\+\).*$/\1/p'

o (compositor, grep y corte):

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

Puede usar mostrar todo, especialmente cuando no tiene el archivo package.json, obtenga los paquetes disponibles de packagist.org:

composer show "monolog/monolog" --all

También puede especificar versiones

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

Técnicamente, “dev-master” es la versión exacta que terminaste usando allí. Es la rama de desarrollo y, por lo tanto, la versión más reciente.

El mejor lugar para buscar versiones disponibles para paquetes de compositores es empaquetador ya que ese es el lugar desde el que el compositor carga las versiones cuando instala paquetes. Las versiones de los monólogos se enumeran en http://packagist.org/packages/monolog/monolog.

Si estás usando sistema de control de versiones gitbuscarás fácilmente cualquier paquete

composer show |grep packagename

Por ejemplo

composer show |grep monolog

Si no está instalando git, puede instalar el programa grep desde este enlacevincúlelo con variables de entorno y escriba el mismo comando anterior en Cmd

Si no sabe cómo vincular el programa con las variables de entorno, vea este enlace después de vincularlo, escriba el mismo comando en el anterior

avatar de usuario
Koeno

Si desea verificar la versión dentro de PHP, puede usar las utilidades de tiempo de ejecución del compositor:

\Composer\InstalledVersions::getVersion('my/package')

Ver https://getcomposer.org/doc/07-runtime.md para más información.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad