¿Cómo instalar una versión específica del paquete usando Composer?

Respuestas:

110

Agregue comillas dobles para usar el operador de intercalación en el número de versión.

composer require middlewares/whoops "^0.4"
Yoann Kergall
fuente
3
No veo un punto en el tiempo en el que pueda pasar el nombre y la versión del paquete como dos argumentos separados.
x-yuri
1
@ x-yuri pasar el nombre y la versión del paquete como argumentos separados funciona para mí usando el compositor 1.5.1
bryonbean
Aunque técnicamente esta no es la respuesta "correcta" para la pregunta del OP, probablemente sea más útil para la mayoría de las personas.
Rich Court
19

solo use php composer.phar require

Por ejemplo :

php composer.phar require doctrine/mongodb-odm-bundle 3.0

También disponible con instalación.

https://getcomposer.org/doc/03-cli.md#require https://getcomposer.org/doc/03-cli.md#install

Aize
fuente
Para el registro, agregar restricciones personalizadas no está disponible con install- solo con require. Si esperaba cambiar a una versión específica y registrar su composer.lockarchivo, puede hacerlo, pero tendría que usarlo composer requirey luego revertir el cambio a composer.jsoncontinuación.
mindplay.dk
¿Versión como argumento separado? ¿Estaba eso alguna vez disponible?
x-yuri
9

Como @alucic mencionó, use:

composer require vendor/package:version

o puedes usar:

composer update vendor/package:version

Probablemente debería revisar esta publicación de StackOverflow sobre las diferencias entre la instalación del compositor y la actualización del compositor .

En relación con la pregunta sobre los números de versión, puede revisar la documentación de Composer sobre versiones , pero aquí en resumen:

  • Tilde Version Range ( ~ ) - ~ 1.2.3 es equivalente a> = 1.2.3 < 1.3.0
  • Rango de versión de Caret ( ^ ) - ^ 1.2.3 es equivalente a> = 1.2.3 < 2.0.0

Por lo tanto, con Tilde obtendrá actualizaciones automáticas de parches, pero las versiones menores y mayores no se actualizarán. Sin embargo, si usa Caret obtendrá parches y versiones menores, pero no obtendrá versiones principales (cambios importantes).

La versión de Tilde se considera un enfoque "más seguro", pero si está utilizando dependencias confiables (bibliotecas bien mantenidas) no debería tener ningún problema con la versión de Caret (porque los cambios menores no deberían ser cambios importantes).

milan.latinovic
fuente
5

Suponga que desea instalar Laravel Collective. Actualmente está en la versión 6.x pero quieres la versión 5.8. Puede ejecutar el siguiente comando:

composer require "laravelcollective/html":"^5.8.0"

Aquí se muestra un buen ejemplo en la documentación: https://laravelcollective.com/docs/5.5/html

Jay LampStack
fuente
0

En tu composer.json, puedes poner:

{
    "require": {
        "vendor/package": "version"
    }
}

luego ejecutar composer installo composer updatedesde el directorio que contiene composer.json. A veces, para mí, el compositor es raro, así que comenzaré composer clear-cache; rm -rf vendor; rm composer.lockantes composer installpara asegurarme de que esté obteniendo cosas nuevas.


Por supuesto, como señalan las otras respuestas, puede ejecutar lo siguiente desde la terminal:

composer require vendor/package:version

Y sobre el versionado:
- Artículo de versiones oficiales del compositor
- Ecosia Search

Junco
fuente