Composer

Composer, el manejador de dependencias de PHP, ¡ya está disponible en su versión 2.0! y viene acompañado de muchos cambios y mejoras que te sorprenderán.

Veamos algunas de ellas:

Rendimiento

Composer 2.0 trae grandes mejoras de velocidad y uso de memoria, pues se ha optimizado todo, desde el protocolo utilizado entre Composer y packagist.org hasta la resolución de dependencias. Esta actualización mayor puede producir un aumento en rendimiento significativo (de hasta 60%) cuando ejecutes los comandos instalación y actualización de Composer.

Cambios de Arquitectura

Las actualizaciones ahora son mucho más deterministas, pues el comando update no tomará en cuenta los paquetes que ya están instalados.

Se refactorizó la forma en que se realiza la actualización de dependencias internamente.

Además, la instalación de paquetes ahora ejecutará todas las operaciones de red, en paralelo de ser posible, antes de alterar las dependencias de tu proyecto, lo que reduce la posibilidad de tener un directorio vendor/ «actualizado a medias» si se produce un error de red a mitad de la instalación.

Las actualizaciones parciales y los require/remove también son mucho más rápidos, debido a que Composer solo cargará los metadatos necesarios de los paquetes que se estén actualizando.

Tiempo de ejecución

Se agregó un paso de comprobación de plataforma cuando vendor/autoload.php se inicializa, para comprobar que la versión actual de PHP y las extensiones disponibles coinciden con las dependencias esperadas, de lo contrario, este paso fallará.

Puedes desactivarlo en la opción para configuración de comprobación de la plataforma.

También se añadió una nueva clase Composer\InstalledVersions que será cargada automáticamente en cada proyecto y te permitirá comprobar qué paquetes/versiones están presentes en tiempo de ejecución.

Si tu código se basa en cualquiera de estas características de tiempo de ejecución, deberías requerir el componente virtual "composer-runtime-api": "^2.0" en tu archivo composer.json.

Este paquete se encargará de asegurar que todas las personas que deseen instalar tu proyecto utilicen Composer 2.x.

Informe de errores

Se han mejorado los informes de errores que se muestran cuando las dependencias no puedan ser resueltas, los cuales incluyen mensajes mucho más cortos, más claros y menos repetitivos.

Actualizaciones parciales con restricciones temporales

En ocasiones puedes desear actualizar o revertir un paquete a una versión específica para probar algo. (Como, por ejemplo, cuándo estás desarrollando un componente para Laravel).

Composer 2.0 te permite ejecutar composer update vendor/package:1.0.* para actualizar un solo proveedor/paquete a una versión que coincida con la restricción.

Esto no actualizará su requisito en el archivo composer.json ni marcará el archivo composer.lock como desactualizado.

Si deseas realizar una actualización completa incluyendo una restricción adicional, puedes utilizar composer update --with vendor/package:1.0.*.

Puedes usar 1.0.*, 2.3.4 o cualquier otra restricción de versión.

Actualizar Composer a la versión 2.0

Para brindarte una experiencia agradable, rápida y sencilla al migrar a esta nueva versión, Composer 2.0 mantiene su compatibilidad con las versiones de PHP 5.3 y superior.

Además, el archivo composer.lock es interoperable entre versiones, por lo que puedes actualizar a 2.0 y retroceder fácilmente de ser necesario.

No te preocupes, la mayoría de los comandos y argumentos se mantienen sin cambios en Composer 2.0.

Para actualizar a esta nueva versión, ejecuta en tu terminal:

composer self-update --2

Si encuentras algún problema, puedes regresar a la versión anterior en cualquier momento ejecutando:

composer self-update --1

El uso de comando composer self-update --rollback sería equivalente en este caso.

Sin embargo, nos gustaría mencionarte algunas cosas que quizás puedan causarte inconvenientes al momento de actualizar:

  • Plugins: Todos tus plugins deben estar actualizados para que se admita la nueva versión de Composer
  • Comprobación de plataforma: Composer ahora comprobará que la versión y extensiones actuales de PHP coincidan con las dependencias de tu proyecto, sin encuentra diferencias, el autoloader se cerrará con los detalles de error.
  • Prioridad del repositorio: Si un paquete existe en un repositorio de prioridad más alta, se ignorará por completo en los repositorios de prioridad más baja. Puedes revisar los documentos de prioridades de repositorio para obtener más información.
  • Configuraciones PSR-0 / PSR-4 no válidas: Estas configuraciones ya no se podrán cargar automáticamente en el modo de autoloader optimizado, según las advertencias introducidas en Composer 1.10.

Nota importante para usar Composer 2.0 en producción

Para detectar posibles problemas de incompatibilidad entre paquetes y versiones de PHP, antes de hacer el despliegue de tu proyecto a producción es recomendable que ejecutes composer check-platform-reqs --no-dev como parte del proceso de deploy.

 Si deseas conocer más acerca de los cambios y mejoras de esta nueva versión, puedes leer la guía de actualización.

Esta guía fue creada usando el siguiente material:

Material Relacionado

Además puedes aprender más en nuestra serie Composer, el gestor de dependencias de PHP.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.