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
, ejecutacomposer 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 ficheroscomposer.lock
ycomposer.json
por las versiones originales del repositorio, borra el directoriovendor
y ejecutacomposer 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 autocargaautoload.php
de la aplicación. Se usa cuando hemos añadidos nuevas clases a nuestros proyectos y hemos actualizado el ficherocomposer.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 ficherocomposer.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
.
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