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


El auth de laravel trabaja con $_SESSION?.

el auth de laravel trabaja basado en tokens o con el objeto session de php ...

Rutas de Laravel no funcionan

Buenas a todos, tengo un problema, ultimamente, cada vez que creo un nuevo proyecto de Laravel las rutas de este no funcionan. Por ejemplo: si creo el proyecto, éste se crea, pero al agregarle el sistema de autenticación: "auth" se generan tanto las rutas en el archivo web.php y las vistas. pero si intento acceder a la sección de registro o inicio de sesión me aparece el e...

form request ajax laravel (Mostrar error de validación de formulario con ajax)

Hola, tengo una consulta por hacer. Quisiera conocer sus opiniones, sobre como mostrar los errores de validación con ajax cuando utlizo la clase Form Request. Debo decir que el mensaje de registrado con éxito si lo muestra, sin embargo los mensajes de error no los he podido mostrar. Gracias

//FORM REQUEST


public function rules()
    {
        return [
     ...

Select Dinámico

Hola buenas a todos estoy trabajando en un sistema en el cuál, en un formulario tengo un select para seleccionar datos de una tabla, y en la vista del formulario me funciona ya que me carga todos los datos que tengo almacenados en dicha tabla; pero cuando selecciono una de las opciones, sea cual séa la que seleccione, siempre se guarda el primer registro de la tabla... Es com...