composer.lock: wie geht das

76

Ich versuche diesen Teil zu verstehen: http://getcomposer.org/doc/02-libraries.md#lock-file

Diese Sperrdatei hat keine Auswirkungen auf andere Projekte, die davon abhängen. Es wirkt sich nur auf das Hauptprojekt aus "

Bedeutet das, dass wenn Projekt P von Bibliothek A und Bibliothek A von Bibliothek B v1.3 abhängt, Projekt P sich nicht um die Version von Bibliothek B kümmert und möglicherweise stattdessen B 1.4 installiert? Was ist der Sinn dann?

Oder bedeutet es das Gegenteil, wie man es von einem Abhängigkeitsmanager erwarten würde?

HappyDeveloper
quelle

Antworten:

76

Composer-Abhängigkeiten sind in definiert composer.json. Wenn Sie die Composer-Installation zum ersten Mal ausführen oder wenn Sie die Composer-Aktualisierung ausführen, wird eine gesperrte Sperrdatei composer.lockerstellt.

Die zitierte Dokumentation bezieht sich nur auf die Sperrdatei. Wenn Ihr Projekt P von Bibliothek A abhängt und A von B v1.3 abhängt. *** Wenn A eine Sperrdatei enthält, die besagt, dass jemand "Composer Update" ausgeführt hat, was zur Installation von B v1.3.2 führte, installieren Sie A in Ihrem Projekt P installiert möglicherweise noch 1.3.3, da composer.json(nicht .lock!) Die Abhängigkeit von 1.3. * Definiert hat.

Sperrdateien enthalten immer genaue Versionsnummern und sind nützlich, um die getestete Version an Kollegen oder beim Veröffentlichen einer Anwendung zu übermitteln. Für Bibliotheken sind nur die Abhängigkeitsinformationen in composer.jsonwichtig.

Naderman
quelle
Wie würde man alle Abhängigkeiten auf das aktualisieren, was in einer Sperrdatei angegeben ist (z. B. beim Übertragen eines Projekts vom Staging zum Live)?
Petah
5
Führen Sie einfach composer.phar install aus - das installiert / aktualisiert / entfernt alles in den Zustand der Sperrdatei
naderman
In Python und Ruby gibt es ein ähnliches Konzept, das Gemfile.lock und require.txt umfasst. Siehe: caremad.io/blog/setup-vs-requirement und yehudakatz.com/2010/12/16/… Bedeutet das nicht, dass für PHP "Libraries" die compooser.lock nicht beibehalten werden muss. aber für PHP "Anwendungen" sollte die composer.lock festgeschrieben werden?
CMCDragonkai
Die Datei composer.lock kann auch für Bibliotheken von Vorteil sein. Nicht für jemanden, der von der Bibliothek abhängig ist, sondern für Entwickler der Bibliothek, die mitteilen, welche Versionen sie installiert haben, um Tests auszuführen oder Probleme zu debuggen. Dies kann auch dazu beitragen, zu klären, mit welchen Versionen von Abhängigkeiten das CI-System Tests für die Bibliothek ausgeführt hat.
Naderman
composer.lock ist wie Metadaten für composer.json-Datei
Kashmiri
68

composer.lockzeichnet die genauen Versionen auf, die installiert sind. Damit Sie mit Ihren Mitarbeitern in den gleichen Versionen sind.

Komponisten installieren

  • Nach composer.lockDatei suchen
  • Wenn nicht, composer.lockDatei automatisch generieren (mit composer update)
  • Installieren Sie die angegebenen Versionen, die in der composer.lockDatei aufgezeichnet sind

Komponisten-Update

  • Gehen Sie die composer.jsonDatei durch
  • Überprüfen Sie die Verfügbarkeit neuerer (neuester) Versionen anhand der genannten Versionskriterien (z. B. 1.12. *).
  • Installieren Sie die neuesten (gemäß oben genannten) Versionen
  • Update - composer.lockDatei mit installierten Versionen

Also in einer einfachen Checkliste.

Wenn Sie alle Mitarbeiter in den gleichen Versionen wie Sie behalten möchten ...

  • Bringen Sie Ihre composer.lockzu GIT (oder VCS Sie haben)
  • Bitten Sie andere, diese Version der composer.lockDatei zu erhalten
  • Verwenden Sie immer composer install , um die richtigen Abhängigkeiten zu erhalten

Wenn Sie die Systemabhängigkeiten auf neue Versionen aktualisieren möchten

  • Überprüfen Sie die Datei composer.json auf Versionsspezifikationen.
  • Mach a composer update
  • Dadurch wird die composer.lockDatei mit den neuesten Versionen geändert
  • Übertragen Sie es an die GIT (oder vcs)
  • Bitten Sie andere, es zu bekommen und composer install

Es folgt eine sehr gute Lektüre unter
https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file

Genießen Sie die Kraft der composer.lockDatei!

Dilhan Maduranga
quelle
1
Ich möchte auch darauf hinweisen, dass die Composer-Installation manchmal nicht die gewünschten Versionen erhält, wenn sie bereits installiert sind. Um dieses Problem zu umgehen, müssen sie den Herstellerordner löschen und die Composer-Installation erneut durchführen, um die richtige Version in Composer zu erhalten. sperren. Beispiel: Ich erhalte nach der Installation von Composer 4.0.1 anstelle von 4.0.14-Beta von meinem Anbieter. Ich habe den Anbieter gelöscht und dann die Composer-Installation erneut ausgeführt. Dann habe ich die richtige Version 4.0.14-Beta erhalten
PauAI
3

Der Zweck der Sperrdatei besteht darin, die genauen installierten Versionen aufzuzeichnen, damit sie erneut installiert werden können. Dies bedeutet, dass Sie, wenn Sie eine Versionsspezifikation von 1. * haben und Ihr Mitarbeiter composer updatedie Installation von 1.2.4 ausführt und dann die Datei composer.lock composer installfestschreibt, auch 1.2.4 erhalten, selbst wenn 1.3.0 wurde veröffentlicht. Dies stellt sicher, dass jeder, der an dem Projekt arbeitet, genau dieselbe Version hat. Lesen Sie hier mehr Composer: Alles dreht sich um die Sperrdatei

Shahzaib Hayat Khan
quelle