Composer

Composer es un manejador de dependencias muy fácil de usar, pero a veces pueden presentarse inconvenientes que no son tan sencillos de resolver. En este tutorial aprenderás cómo resolver los problemas más habituales que te puedes encontrar con Composer.

Resolviendo problemas generales de Composer

  1. Revisa la configuración del sistema, el primer paso si tienes problemas, es ejecutar composer diagnose. De ese modo, Composer revisará automáticamente tu sistema y te avisará si encuentra algún problema.
  2. Actualiza tu versión de Composer, el siguiente paso es asegurarte que tienes la última versión con el comando composer self-update.
  3. Aumenta el nivel de detalle en los mensajes que muestra el comando, añade la opción -vvv al comando que estés utilizando para ver todo el proceso con detalle.
  4. Borra la carpeta vendor y el fichero composer.lock y ejecuta composer install.
  5. Vacía la caché interna, si tienes problemas con Composer y no te funciona nada de lo anterior, usa el comando composer clear-cache para vaciar tu caché. De ese modo, se volverán a descargar las versiones originales de los paquetes la próxima vez que utilices composer install o composer update.

Resolviendo errores concretos

Composer es muy lento al actualizar/instalar los paquetes

  • Desactiva xDebug en tu fichero php.ini mientras usas Composer comentando las líneas correspondientes.
  • Usar el mayor nivel de estabilidad posible aumentará ligeramente la velocidad de instalación/actualización de los paquetes.
  • Cambiar las dependencias para que sean lo más específicas posibles, también ayuda. Por ejemplo, cambia «laravel/framework»: «5.*» por «laravel/framework»: «5.0.*» o mejor aún, por «laravel/framework»: «5.0.28».
  • Si tienes configurado «preferred-install»: «source», utiliza --prefer-dist para descargar los paquetes en formato .zip y aumentar la velocidad.
  • Por último, puedes instalar Satis para mantener una copia estática en local de los paquetes que utilizas habitualmente. Y utilizar un script php para configurarlo.

Error de Timeout

Si tienes errores de Timeout porque tu conexión va muy lenta, configura el parámetro process-timeout para aumentar el tiempo por defecto que es de 300 segundos (5 minutos).Por ejemplo, para 15 minutos:

Warning: Fichero lock desactualizado

Cuando Composer genera el fichero composer.lock, guarda en él un Hash MD5 del fichero composer.json. Si posteriormente modificas el fichero composer.json, Composer te mostrará ese mensaje hasta que ejecutes composer install o composer update.

Your requirements could not be resolved to an installable set of packages

Este error indica que según tus requerimientos mínimos de estabilidad, hay una dependencia para la que no se ha encontrado ninguna versión que cumpla esos requerimientos.

Empieza configurando «minimum-stability»: «dev» en tu fichero composer.json. Y borrando (si existiera) «prefer-stable»: true. Si no te da problemas, puedes probar con mayores niveles de estabilidad y cuando hayas encontrado el mínimo necesario, añade «prefer-stable»: true para asegurarte de que ese nivel se aplique únicamente en los paquetes que lo requieran, o configura el nuevo nivel de estabilidad de forma individual para cada paquete que lo necesite (puedes usar composer show --installed para ver las versiones instaladas).

Error 503 al descargar los ficheros .zip de GitHub

Prueba usar composer install --prefer-source o composer update --prefer-source.

Recomendaciones

  • Cuando distribuyas tu proyecto, recuerda añadir los ficheros composer.json y composer.lock.
  • Generalmente usa composer install para instalar aplicaciones a no ser que tengas la certeza de que necesitas usar composer update.
  • Utiliza composer require (en lugar de editar manualmente el fichero composer.json) para añadir paquetes a tu aplicación.
  • Usa --no-dev a no ser que necesites instalar las librerías de desarrollo.
  • Usa --optimize-autoloader en el entorno de producción para mejorar el rendimiento de tu aplicación.
  • No uses «minimum-stability»: «dev» en tus ficheros.json. En su lugar, configura las dependencias dev para los paquetes que las necesiten. O al menos, si lo usas, combínalo con «prefer-stable»: true.
  • Utiliza el parámetro --dev del comando composer require cuando instales paquetes que vas a usar únicamente en el entorno de desarrollo. Como los paquetes de tests, seeders, depuración, complementos del IDE, etc…
  • Antes de subir tus cambios al repositorio, ejecuta el comando composer validate para asegurarte de que tu fichero composer.json es correcto.
  • No distribuyas ni subas a tu repositorio la carpeta vendor. Añade siempre esa carpeta a tu fichero .gitignore.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

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

Lección anterior Controla las versiones de los componentes de tu proyecto con Composer