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
- 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. - Actualiza tu versión de Composer, el siguiente paso es asegurarte que tienes la última versión con el comando
composer self-update
. - 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. - Borra la carpeta vendor y el fichero composer.lock y ejecuta composer install.
- 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:
# composer config --global process-timeout 1500
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 usarcomposer 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 comandocomposer 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.
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