El archivo misterioso composer.lock

El archivo misterioso composer.lock

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

Adquiere en preventa y aprovecha un gran descuento TDD en Laravel

Comparte en

Creado por: Venezuela Italo Morales

Profesor de #Laravel y #PHP en Rimorsoft Online

Más información


Spatie/Laravel Permission ¿Cómo agregar campos en la tabla "roles"?

Hola, mi consulta es la siguiente:

Relacioné la tabla "roles" con mi tabla** "empresa**", es decir, en la tabla "roles", tengo el campo "id_empresa", en la vista, están los campos necesarios y el select de la empresa pero al querer guardar los datos, me arroja el siguiente error: ** "The given role or permission should use guard web instead of Empresas. "** No ...

SOFTWARE PARA CONSULTORIOS MEDICOS

Hola Amigos. soy nuevo en el grupo.. me gustaria saber si alguien tiene o tuvo algun proyecto basado en laravel, para consultorios medicos? ...

sincronización de componentes hermanos

un gran saludo a la comunidad rimorsorf... espero de su valiosa ayuda para mi problema que es el siguiente:

tengo dos componentes en el mismo nivel, el primero crea una tabla con una lista de procesos por tramitar y el segundo componente lista en una tabla los procesos que se han asignado para tramitar; cuando en la primera tabla se asigna el proceso este debe desaparecer de...

plantilla blade y vuejs2

buenas noches comunidad, por casualidad alguien sabrá si se puede integrar la plantilla de laravel blade en vuejs2 component??, gracias dee antemano...