compositor.lock: ¿cómo funciona?

4 minutos de lectura

avatar de usuario
HappyDeveloper

Estoy tratando de entender esta parte: http://getcomposer.org/doc/02-libraries.md#lock-file

este archivo de bloqueo no tendrá ningún efecto en otros proyectos que dependan de él. Solo tiene un efecto en el proyecto principal”

¿Eso significa que si el proyecto P depende de la biblioteca A y la biblioteca A depende de la biblioteca B v1.3, al proyecto P no le importará la versión de la biblioteca B y posiblemente instalará B 1.4 en su lugar? ¿Cuál es el punto entonces?

¿O significa lo contrario, como cabría esperar de un administrador de dependencias?

avatar de usuario
dilhan maduranga

composer.lock registra las versiones exactas que están instaladas. Para que estés en las mismas versiones que tus compañeros de trabajo.

instalación del compositor

  • Comprobar composer.lock expediente
  • Si no, generar automáticamente composer.lock archivo (usando composer update)
  • Instale las versiones especificadas registradas en el composer.lock expediente

actualización del compositor

  • Ir a través de composer.json expediente
  • Verifique la disponibilidad de versiones más nuevas (más recientes), según los criterios de versión mencionados (p. ej., 1.12.*)
  • Instale las últimas versiones posibles (de acuerdo con lo anterior)
  • Actualizar composer.lock archivo con versiones instaladas

Entonces, en una simple lista de verificación.

Si desea mantener a todos los compañeros de trabajo en las mismas versiones que usted…

  • Comprometer su composer.lock a GIT (o vcs que tengas)
  • Pida a otros que obtengan esa versión de composer.lock expediente
  • Siempre usa composer install para obtener las dependencias correctas

Si desea actualizar las dependencias del sistema a nuevas versiones

  • Consulte el archivo composer.json para conocer las especificaciones de la versión.
  • hacer un composer update
  • Esto cambiará el composer.lock archivo con las versiones más recientes
  • Confirmarlo con el GIT (o vcs)
  • Pídale a otros que lo obtengan y composer install

La siguiente será una muy buena lectura.
https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file

Disfruta del poder de composer.lock ¡expediente!

  • También me gustaría señalar que la instalación del compositor, a veces no obtiene las versiones que deseaba cuando ya están instaladas, como solución alternativa, tienen que eliminar la carpeta del proveedor y la instalación del compositor nuevamente para obtener la versión correcta en el compositor. cerrar. Por ejemplo, obtengo 4.0.1 en lugar de 4.0.14-beta de mi proveedor después de instalar Composer, eliminé el proveedor, luego Composer instaló nuevamente y luego obtuve la versión correcta 4.0.14-beta

    – Pau AI

    19 de marzo de 2017 a las 23:39

Las dependencias de Composer se definen en composer.json. Al ejecutar la instalación de Composer por primera vez, o al ejecutar Composer, actualice un archivo de bloqueo llamado composer.lock se creará.

La documentación citada se refiere únicamente al archivo de bloqueo. Si su proyecto P depende de la biblioteca A y A depende de B v1.3.***, entonces si A contiene un archivo de bloqueo que dice que alguien ejecutó la “actualización del compositor”, lo que resultó en la instalación de B v1.3.2, luego instale A en su proyecto P aún podría instalar 1.3.3, ya que el composer.json (no .lock!) definió la dependencia en 1.3.*.

Los archivos de bloqueo siempre contienen números de versión exactos y son útiles para comunicar la versión con la que probó a sus colegas o al publicar una aplicación. Para las bibliotecas, la información de dependencia en composer.json es todo lo que importa.

  • ¿Cómo se actualizarían todas las dependencias a lo que se especifica en un archivo de bloqueo (como cuando se transfiere un proyecto de la puesta en escena a la vida)?

    – Petaj

    27 de febrero de 2013 a las 17:12

  • Simplemente ejecute composer.phar install, que instala/actualiza/elimina todo al estado del archivo de bloqueo

    – naderman

    28 de febrero de 2013 a las 16:09

  • En Python y Ruby, existe un concepto similar que involucra Gemfile.lock y requirements.txt. Ver: caremad.io/blog/setup-vs-requirement y yehudakatz.com/2010/12/16/… ¿No significa eso que para las “Bibliotecas” de PHP no es necesario mantener compooser.lock? pero para las “Aplicaciones” de PHP, ¿debe comprometerse el composer.lock?

    – CMC Dragonkai

    26 de noviembre de 2013 a las 10:22

  • El archivo composer.lock también puede ser beneficioso para las bibliotecas. No para cualquiera que dependa de la biblioteca, pero para los desarrolladores de la biblioteca que comunican qué versiones instalaron para ejecutar pruebas o depurar problemas, también puede ayudar a aclarar con qué versiones de dependencias el sistema CI ejecutó pruebas para la biblioteca.

    – naderman

    23 de noviembre de 2016 a las 13:10

  • composer.lock es como metadatos para el archivo composer.json

    – Wasim Kan

    29 de enero de 2019 a las 9:45

El objetivo del archivo de bloqueo es registrar las versiones exactas que están instaladas para que puedan volver a instalarse. Esto significa que si tiene una especificación de versión de 1.* y su compañero de trabajo ejecuta composer update que instala 1.2.4, y luego confirma el archivo composer.lock, cuando composer install, también obtendrá 1.2.4, incluso si se ha lanzado 1.3.0. Esto garantiza que todos los que trabajan en el proyecto tengan exactamente la misma versión. Lea más aquí Compositor: todo se trata del archivo de bloqueo

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad