El archivo misterioso composer.lock

↑ Me gusta (0)

composer.lock es conocido como el archivo misterioso que no deberíamos borrar. Vamos en este post a hablar sobre ese tema para cerrar el ciclo de la serie composer. Composer es un gran sistema, es una aplicación PHP que maneja las versiones de los paquetes PHP, con su ayuda podemos descargar y actualizar paquetes y proyectos. Es muy sencillo, ya lo hemos visto antes.

En este post voy a asumir que has hecho uso de esta aplicación (composer) instalando laravel, algún paquete o que has creado una breve aplicación. Es difícil hacerte llegar estos conceptos si no ha sucedido lo previamente mencionado.

Inicios de composer.json

Cuando comenzamos un proyecto tenemos a la mano al archivo composer.json, aquí encontramos una lista con los paquetes y versiones que usará nuestra aplicación, pero en la medida que avanzamos vemos que nos aparece un archivo llamado composer.lock y por eso estamos aquí. Este archivo (composer.json) es un plano inicial y breve, es una lista jerárquica de dependencias y aplicaciones. Cuando comenzamos no tenemos un archivo composer.lock, este aparece en el momento que ejecutamos el comando composer install. En otras palabras, instalamos los paquetes y el misterioso archivo composer.lock nace y tiene vida.

Por favor, puedes ir a mirar este archivo antes de continuar... ¡es un archivo inmenso!

El archivo composer.lock

Revelemos el misterio, en composer.json tenemos una breve lista con las versiones aproximadas de dependencia que Composer debe instalar, y el archivo composer.lock tiene el registro exacto de las versiones de dependencia que se han instalado.

Si fuiste a mirar el archivo composer.lock habrás notado que es un super archivo, y eso se debe a que tiene item a item la versión precisa que se instaló cuando Composer siguió las instrucciones de archivo composer.json. Este archivo también realiza un seguimiento de todas las versiones de las dependencias de sus dependencias. Tienes todo aquí, dependencias de dependencias de dependencia que a su vez puede tener dependencias... Bueno, entiendes la idea.

Todo, absolutamente todo tu sistema a nivel jerárquico de dependencias tendrá sus versiones en el archivo composer.lock.

Lo que puedes estarte preguntando es ¿para que me sirve?... Y esto es bastante simple. Si eliminas a la carpeta vendor a su vez estarás elimimando todos los paquetes y dependencias. Entonces no te preocupas, solo ejecutas el comando composer install y composer verá que tienes un archivo llamado composer.lock. Entonces en lugar de encontrar versiones compatibles de su dependencias para completar el archivo composer.json, él instalará la versión exacta de su dependencias como se define en el archivo composer.lock.

Esto significa que tenemos la versión exacta de nuestras dependencias que teníamos instaladas antes borrar la carpeta vendor. Y eso si resulta bastante útil.

Otra pregunta, ¿qué causaría que el archivo composer.lock cambie?

Este archivo cambia si ejecutas el comando composer update y no recomiendo hacerlo a cada rato, debes usar composer install para instalar tu nuevo paquete sin actualizar las versiones de tus otros paquetes. Esto sería mucho más seguro y evitamos fallas por actualizar nuevos paquetes y dependencias.

Usa composer update sabiendo con claridad lo que estás haciendo, no te arriesgues

Serie de composer