Composer, el manual oficial

2.4. El archivo composer.lock

Después de instalar las dependencias, Composer apunta en el archivo composer.lock la versión exacta que se ha instalado de cada librería. De esta forma, el proyecto se fija a unas determinadas versiones.

Una buena práctica recomendada consiste en subir al repositorio de código tanto el archivo composer.lock como el archivo composer.json. Esto es muy importante porque el comando install comprueba primero si existe el archivo composer.lock y si existe, descarga exactamente las versiones que se indican en ese archivo (sin importar lo que diga el archivo composer.json).

Gracias al archivo composer.lock, cualquier persona que se descargue el proyecto tendrá exactamente las mismas versiones de las dependencias. Además, tu servidor de integración continua, tus servidores de producción, todos los miembros del equipo de desarrollo y cualquier otra persona o cosa que se baje el proyecto tendrá exactamente las mismas dependencias. Esto hace que se reduzcan o incluso desaparezcan los errores producidos por ejecutar diferentes versiones de las librerías.

Aunque los proyectos sólo los desarrolles tu, cuando dentro de unos meses tengas que reinstalar un proyecto que desarrollaste hace tiempo, gracias al archivo composer.lock tendrás la seguridad de que todo sigue funcionando bien aunque se hayan publicado nuevas versiones de las dependencias de tu proyecto.

Si no existe el archivo composer.lock, Composer determina las dependencias a partir del archivo composer.json y después crea el archivo composer.lock.

Esto significa que si alguna de las dependencias publica una nueva versión, no se actualizará automáticamente en tu proyecto. Para actualizar a la nueva versión, utiliza el comando update. Este comando hace que Composer busque las versiones más recientes de las librerías, siempre que sigan cumpliendo las restricciones de las versiones indicadas en el archivo composer.json. Obviamente, este comando update también actualiza el archivo composer.lock:

$ php composer.phar update

Si solamente quieres instalar o actualizar una dependencia, puedes indicar su nombre después del comando:

$ php composer.phar update monolog/monolog [...]

Nota Si estás desarrollando una librería, no es estrictamente necesario que subas el archivo composer.lock al repositorio, tal y como se explica en la sección sobre el archivo composer.lock del siguiente capítulo.