Diferencia entre composer.json y composer.lock en proyectos Laravel


Victor Arana Flores

28 Jul 2023

En todo proyecto de Laravel, es común encontrar dos archivos fundamentales: composer.json y composer.lock. ¿Cuál es la distinción entre estos dos archivos?

En el archivo composer.json especificas las dependencias del proyecto y sus versiones. Por ejemplo:

{
    "require": {
        "laravel/breeze": "^1.19"
    }
}

Esto indica a Composer que instale la versión más reciente del paquete laravel/breeze, pero no específica una versión exacta.

Para conocer todas las opciones de sintaxis, como los símbolos ^ y *, para especificar versiones, consulta la documentación de Composer aquí.

En cambio, el archivo composer.lock juega un papel crucial en el proceso. Cuando ejecutas el comando composer install, se verifica composer.lock para determinar las versiones exactas de las dependencias instaladas previamente durante la última ejecución de composer install.

Por ejemplo:

{
    // ...
    "name": "laravel/breeze",
    "version": "v1.19.1",
    "source": {
        "type": "git",
        "url": "https://github.com/laravel/breeze.git",
        "reference": "4bbb1ea3476901c4f5fc706f8d80e4eac31c3afb"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/laravel/breeze/zipball/4bbb1ea3476901c4f5fc706f8d80e4eac31c3afb",
        "reference": "4bbb1ea3476901c4f5fc706f8d80e4eac31c3afb",
        "shasum": ""
    },
    // ...
}

En este ejemplo, la versión exacta del paquete laravel/breeze instalada es v1.19.1.

Es importante recordar que al ejecutar composer update, Composer verificará si existen versiones más recientes de los paquetes y, de ser así, actualizará composer.lock con las nuevas versiones.

Puede ver la composer.lockdiferencia del laravel/breezepaquete después de ejecutar composer update, que actualizó la versión del paquete de 1.19.1 a 1.19.2 a continuación:

Una buena práctica en entornos de producción es siempre utilizar composer install en lugar de composer update, ya que las actualizaciones sin pruebas previas pueden ocasionar problemas en la aplicación. Usa composer update localmente, luego guarda el archivo composer.lock actualizado en el repositorio y, finalmente, ejecuta composer install en el servidor de producción.


0 comentarios

Inicia sesión para comentar