2012-05-20 21 views
36

estoy tratando de entender esta parte: http://getcomposer.org/doc/02-libraries.md#lock-filecomposer.lock: ¿cómo funciona?

este fichero de bloqueo no tendrá ningún efecto sobre otros proyectos que dependen de ella. Que sólo tiene un efecto sobre el proyecto principal"

¿Eso quiere decir que si el proyecto P depende de la biblioteca A, y la biblioteca A depende de la biblioteca B v1.3, proyecto P no se preocupan por la versión de la biblioteca B, y posiblemente instalar B 1.4 en su lugar? ¿de qué sirve entonces?

O qué significa todo lo contrario, como cabría esperar de un gestor de dependencia?

Respuesta

46

dependencias del compositor se definen en composer.json. Cuando se ejecuta el compositor instalar por primera vez, o al ejecutar la actualización del compositor, se creará un archivo de bloqueo llamado composer.lock.

La documentación citada hace referencia solo 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" que resulta en la instalación de B v1.3.2, entonces instale A en su proyecto P aún podría instalar 1.3.3, ya que 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 que ha probado con colegas o al publicar una aplicación. Para las bibliotecas, la información de dependencia en composer.json es lo único que importa.

+0

Oh, ya veo, gracias. – HappyDeveloper

+0

¿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 una etapa a otra)? – Petah

+2

Simplemente ejecute la instalación de composer.phar, que instala/actualiza/elimina todo al estado del archivo de bloqueo – naderman

17

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

compositor instalar

  • Comprobar si composer.lock archivo
  • Si no es así, auto generar composer.lock archivo (utilizando composer update)
  • instalar las versiones especificadas registrados en el archivo composer.lock

compositor update

  • Ir a través del archivo composer.json
  • Consulta la disponibilidad de (últimas versiones más recientes), en base a los criterios mencionados versión (por ejemplo, 1.12. *)
  • instalar la última posible (según lo anterior) versiones
  • Actualizar composer.lock archivo con versiones instaladas

Así, en una lista de control sencilla.

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

  • de comprometer su composer.lock a GIT (o VCS que tiene)
  • pedir a los demás para conseguir la esa versión de composer.lock archivo
  • Use siemprecomposer install para obtener las dependencias correctas

Si desea actualizar las dependencias del sistema a las nuevas versiones

  • Consulte el archivo composer.json para ver las especificaciones de la versión.
  • Hacer un composer update
  • Esto cambiará el archivo composer.lock con más nuevas versiones
  • COMPROMÉTANSE al GIT (o VCS)
  • Pedir a otros para conseguirlo y composer install

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

Disfrute del poder del archivo composer.lock !

+0

También me gustaría señalar que la instalación del compositor, a veces no obtiene las versiones que quería cuando ya están instaladas, como solución alternativa tienen que eliminar la carpeta del proveedor y la instalación del compositor de nuevo para obtener la versión correcta en el compositor .bloquear. p. Recibo 4.0.1 en lugar de 4.0.14-beta de mi proveedor después de la instalación del compositor, eliminé el proveedor y luego la instalación del compositor nuevamente, luego obtuve la versión correcta 4.0.14-beta – PauAI

2

El objetivo del archivo de bloqueo es registrar las versiones exactas que están instaladas para que puedan volverse a instalar. Esto significa que si tiene una versión especificada 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 1.3 .0 ha sido lanzado. Esto garantiza que todos los que trabajen en el proyecto tengan la misma versión exacta.Lea más aquí Composer: It’s All About the Lock File