Cuando trabajas con Composer, es posible que necesites bloquear versiones específicas de paquetes para garantizar la estabilidad de tu proyecto y evitar incompatibilidades. Composer ofrece herramientas para especificar restricciones de versión en el archivo composer.json
.
Puedes definir las versiones de los paquetes que deseas instalar o actualizar usando restricciones en el archivo composer.json
. Estas restricciones se expresan mediante operadores semánticos. A continuación, te explicamos cómo hacerlo.
composer.json
1. Usar operadores semánticos
Los operadores más comunes para bloquear versiones son:
Operador | Descripción | Ejemplo |
---|---|---|
=
|
Bloquea una versión exacta. |
"monolog/monolog": "2.3.0"
|
!=
|
Excluye una versión específica. |
"monolog/monolog": "!=2.3.0"
|
< , <=
|
Permite versiones menores o iguales que la especificada. |
"monolog/monolog": "<2.0"
|
> , >=
|
Permite versiones mayores o iguales que la especificada. |
"monolog/monolog": ">=2.0"
|
~
|
Acepta actualizaciones de parches dentro de una versión menor específica. |
"monolog/monolog": "~2.0"
|
^
|
Acepta actualizaciones menores o parches dentro de la versión mayor especificada. |
"monolog/monolog": "^2.0"
|
2. Configurar en el archivo composer.json
Ejemplo para bloquear la versión 2.3.0
de monolog/monolog
:
{
"require": {
"monolog/monolog": "2.3.0"
}
}
3. Instalar dependencias con las restricciones definidas
Una vez configurado, ejecuta:
composer install
Composer instalará únicamente las versiones que cumplen con las restricciones especificadas.
Si ya tienes un proyecto configurado y necesitas actualizar paquetes manteniendo las restricciones, usa:
composer update
Composer respetará las restricciones establecidas en composer.json
.
1. Permitir solo una versión exacta
Para bloquear la versión 1.10.0 de guzzlehttp/guzzle
:
{
"require": {
"guzzlehttp/guzzle": "1.10.0"
}
}
2. Evitar una versión específica
Si deseas excluir la versión 2.3.0:
{
"require": {
"monolog/monolog": "!=2.3.0"
}
}
3. Permitir solo una serie de versiones
Si necesitas aceptar solo actualizaciones dentro de la versión 2.x:
{
"require": {
"monolog/monolog": "^2.0"
}
}
Para más detalles sobre la especificación de versiones y la gestión de dependencias, consulta la documentación oficial de Composer.
Jorge García
Fullstack developer