Composer

En este tutorial te enseñaremos las diferencias que existen entre composer install y composer update, su uso y cómo ejecutar estos comandos correctamente en tus proyectos de PHP que utilicen Composer, el gestor de dependencias de PHP.

En las aplicaciones web cuyas dependencias están gestionadas con Composer, la convención habitual es no subir a los repositorios los paquetes que no forman parte de la aplicación. Es decir, los que están en la carpeta vendor.

Por eso, cuando clonamos una aplicación en nuestro equipo, el primer paso para poder ejecutarla es generar el directorio vendor. Para eso Composer tiene dos comandos: install y update.

Comando install

Las dependencias de nuestra aplicación con Composer se configuran en el fichero composer.json. La primera vez que ejecutamos composer install en un proyecto, Composer lee ese fichero, resuelve las dependencias que hay en él e instala los paquetes en el directorio vendor.

La versión de cada paquete depende de las versiones configuradas para cada paquete y la configuración de estabilidad especificadas en el fichero composer.json.

Luego, Composer crea en el directorio donde se ha ejecutado el comando install el fichero composer.lock en el cual anota todos los paquetes instalados y la versión instalada de cada uno de ellos.

Las próximas veces que se ejecute composer install en dicho proyecto, Composer leerá ese fichero e instalará aquellos paquetes que aparezcan en el fichero y no se encuentren en el directorio vendor.

El comando composer install debe ser ejecutado desde el directorio raíz de la aplicación.

Comando update

El comando composer update lee siempre el fichero composer.json e instala las dependencias de ese fichero. Después de instalar los paquetes, crea en el directorio donde se ha ejecutado este comando el fichero composer.lock o lo actualiza si ya existe.

La diferencia fundamental es que composer install a excepción de la primera vez que se ejecuta, está pensado para que todos los usuarios y desarrolladores de ese paquete compartan el mismo entorno y las mismas versiones de cada paquete. Mientras que composer update te permite actualizar todos los paquetes que utiliza tu aplicación. A continuación, puedes ver un resumen de lo visto en este tutorial:

  • Cuando clones una aplicación en la que vas a colaborar, si no existe el directorio vendor, ejecuta composer install para crear ese directorio y tener el mismo entorno que el resto de desarrolladores.
  • Cuando clones una aplicación para utilizarla o probarla, puedes optar por cualquiera de las dos alternativas. Pero ten en cuenta que la aplicación ha sido testada con un entorno concreto. Si ejecutas composer update y la aplicación da errores, sustituye los ficheros composer.lock y composer.json por las versiones originales del repositorio, borra el directorio vendor y ejecuta composer install para comprobar que no sean errores de compatibilidad con nuevas versiones de los paquetes.
  • Cuando distribuyas tu aplicación, asegúrate de incluir el fichero composer.lock para que tus usuarios o miembros del equipo puedan usarla con el mismo entorno que tú tienes.
  • No confundas esos comandos con composer dump-autoload. composer dump-autoload no descarga nada y únicamente actualiza los ficheros de autocarga autoload.php de la aplicación. Se usa cuando hemos añadidos nuevas clases a nuestros proyectos y hemos actualizado el fichero composer.json.
  • Cuando añades un nuevo paquete a tu aplicación, si usas el comando composer require (por ejemplo, composer require doctrine/dbal:~2.3), composer añadirá ese paquete al fichero composer.json y lo instalará. Por lo que seguirás manteniendo para el resto de paquetes las mismas versiones que tienen instaladas los demás desarrolladores del equipo.

Si al ejecutar una aplicación te aparece el siguiente error:

PHP Fatal error: require(): Failed opening required ‘(…)\bootstrap/../vendor/autoload.php’ (include_path=’.;C:\php\pear’) in (…)\bootstrap\autoload.php on line 17

Comprueba si existe el directorio vendor. Y si no existe, ejecuta composer install o composer update.

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 Instalar y actualizar paquetes con Composer Lección siguiente Controla las versiones de los componentes de tu proyecto con Composer