Was sind die Unterschiede zwischen composer update
und composer install
?
Was sind die Unterschiede zwischen composer update
und composer install
?
Antworten:
Komponisten-Update
composer update
aktualisiert Ihre Abhängigkeiten wie in angegeben composer.json
Wenn Sie dieses Paket beispielsweise als Abhängigkeit benötigen:
"mockery/mockery": "0.9.*",
Wenn Sie die 0.9.1
Version des Pakets tatsächlich installiert haben , führt das Ausführen composer update
zu einem Upgrade dieses Pakets (z. B. auf 0.9.2
, wenn es bereits veröffentlicht wurde).
im Detail composer update
wird:
composer.json
composer.json
composer.lock
, um die installierte Paketversion zu speichernKomponisten installieren
composer install
wird nichts aktualisieren; Es werden nur alle in der composer.lock
Datei angegebenen Abhängigkeiten installiert
Im Detail:
composer.lock
Datei vorhanden ist (falls nicht, führen Sie sie aus composer-update
und erstellen Sie sie).composer.lock
Datei lesencomposer.lock
Datei angegebenen PaketeWann zu installieren und wann zu aktualisieren
composer update
wird hauptsächlich in der 'Entwicklungsphase' verwendet, um unsere Projektpakete gemäß den Angaben in der composer.json
Datei zu aktualisieren.
composer install
wird hauptsächlich in der Bereitstellungsphase verwendet, um unsere Anwendung auf einem Produktionsserver oder in einer Testumgebung zu installieren, wobei dieselben Abhängigkeiten verwendet werden, die in der durch composer update erstellten Datei composer.lock gespeichert sind.
composer global update
aktualisiert Abhängigkeiten in Ihrem globalen Repository vom lokalen System ( COMPOSER_HOME
env-Variable)
composer update
auf Ihrem lokalen System ausführen und Ihre Anwendung testen, dann die composer.lock auf Ihren Produktionsserver hochladen und ausführencomposer install
Wenn Sie es ausführen composer install
, sucht es nach einer Sperrdatei und installiert alles, was darin enthalten ist. Wenn es keine findet, liest es composer.json
, installiert seine Abhängigkeiten und generiert eine Sperrdatei.
Wenn Sie es ausführen, wird composer update
es einfach gelesen composer.json
, installiert die Abhängigkeiten und aktualisiert die Sperrdatei (oder erstellt eine neue Sperrdatei).
composer install
composer.lock
existiert.
composer.lock
Datei.composer.lock
sie nicht existieren.
composer.json
.composer.lock
Datei basierend auf den installierten Paketen.Stand: composer help install
:
Der Befehl install liest die
composer.lock
Datei aus dem aktuellen Verzeichnis, verarbeitet sie und lädt alle in dieser Datei beschriebenen Bibliotheken und Abhängigkeiten herunter und installiert sie. Wenn die Datei nicht vorhanden ist, wird nachcomposer.json
demselben gesucht und es wird dasselbe getan.
composer update
composer.json
Datei (installiert, aktualisiert und entfernt).composer.lock
Datei entsprechend den Änderungen.Stand: composer help update
:
Der Befehl update liest die
composer.json
Datei aus dem aktuellen Verzeichnis, verarbeitet sie und aktualisiert, entfernt oder installiert alle Abhängigkeiten.
Siehe auch: Komponist: Alles dreht sich um die Sperrdatei
Der beste Unterschied zwischen composer update
undcomposer install
Komponisten installieren
Um Abhängigkeiten hinzuzufügen, müssen Sie diese manuell zur Datei composer.json hinzufügen.
Wenn die Datei composer.lock vorhanden ist, installieren Sie genau das, was in dieser Datei angegeben ist
Mit diesem Befehl wird keine Komponente aktualisiert.
Komponisten-Update
Um Abhängigkeiten hinzuzufügen oder zu entfernen, müssen Sie sie manuell zur Datei composer.json hinzufügen
Wenn Sie die Bibliothek composer.json nicht manuell ändern können (oder nicht wissen, wie eine Bibliothek hinzugefügt oder entfernt werden kann, was in der Tat einfach ist, fügen Sie einfach den Namen der Abhängigkeit und Version in die Eigenschaft require der Datei ein) Verwenden Sie stattdessen lieber die Befehlszeile. Der Komponist hat hierfür spezielle Funktionen:
Komponist benötigen
Wenn wir beispielsweise eine Abhängigkeit mit der Befehlszeile hinzufügen möchten, werden wir einfach ausgeführt
composer require twig/twig
Komponist entfernen
Wenn Sie eine nicht verwendete Abhängigkeit entfernen möchten, führen wir einfach Folgendes aus:
composer remove twig/twig --update-with-dependencies
if(composer.lock existed){
installs dependency with EXACT version in composer.lock file
} else {
installs dependency with LATEST version in composer.json
generate the composer.lock file
}
composer update = remove composer.lock -> composer install
Warum brauchen wir 2 Befehle. Ich denke, es kann durch composer.lock erklären.
Stellen Sie sich vor, wir NICHT haben composer.lock
und in composer.json
, gibt es eine Abhängigkeit "monolog/monolog": "1.0.*"
oder "monolog/monolog": "^1.0"
.
Dann wird es einige Fälle geben
composer install
zu einer anderen Zeit ausgeführt wird.Was ist, wenn wir immer eine EXAKTE Version verwenden, composer.json
wie z "monolog/monolog": "1.0.1"
.
Wir brauchen immer noch, composer.lock
weil composer.json
nur die Hauptversion Ihrer Abhängigkeit verfolgen kann, kann es nicht die Version der Abhängigkeiten der Abhängigkeit verfolgen.
Was ist, wenn alle Abhängigkeiten der Abhängigkeit auch die EXACT-Version verwenden?
Stellen Sie sich vor, Sie beginnen mit ALLEN Abhängigkeiten, die die EXACT-Version verwenden, und kümmern sich dann nicht darum composer.lock
. Einige Monate später fügen Sie jedoch eine neue Abhängigkeit hinzu (oder aktualisieren die alte Abhängigkeit), und die Abhängigkeiten dieser Abhängigkeit verwenden nicht die EXACT-Version. Dann ist es besser, sich composer.lock
am Anfang darum zu kümmern .
Außerdem gibt es einen Vorteil einer semantischen Version gegenüber einer exakten Version. Möglicherweise aktualisieren wir die Abhängigkeit während der Entwicklung mehrmals, und in der Bibliothek gibt es häufig kleine Änderungen, z. B. Fehlerbehebungen. Dann ist es einfacher, die Abhängigkeit zu aktualisieren, die eine semantische Version verwendet.