Was sind die Unterschiede zwischen composer updateund composer install?
Was sind die Unterschiede zwischen composer updateund 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.1Version des Pakets tatsächlich installiert haben , führt das Ausführen composer updatezu einem Upgrade dieses Pakets (z. B. auf 0.9.2, wenn es bereits veröffentlicht wurde).
im Detail composer updatewird:
composer.jsoncomposer.jsoncomposer.lock, um die installierte Paketversion zu speichernKomponisten installieren
composer installwird nichts aktualisieren; Es werden nur alle in der composer.lockDatei angegebenen Abhängigkeiten installiert
Im Detail:
composer.lockDatei vorhanden ist (falls nicht, führen Sie sie aus composer-updateund erstellen Sie sie).composer.lockDatei lesencomposer.lockDatei angegebenen PaketeWann zu installieren und wann zu aktualisieren
composer updatewird hauptsächlich in der 'Entwicklungsphase' verwendet, um unsere Projektpakete gemäß den Angaben in der composer.jsonDatei 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 updateaktualisiert Abhängigkeiten in Ihrem globalen Repository vom lokalen System ( COMPOSER_HOMEenv-Variable)
composer updateauf 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 updatees einfach gelesen composer.json, installiert die Abhängigkeiten und aktualisiert die Sperrdatei (oder erstellt eine neue Sperrdatei).
composer installcomposer.lockexistiert.
composer.lockDatei.composer.locksie nicht existieren.
composer.json.composer.lockDatei basierend auf den installierten Paketen.Stand: composer help install:
Der Befehl install liest die
composer.lockDatei 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.jsondemselben gesucht und es wird dasselbe getan.
composer updatecomposer.jsonDatei (installiert, aktualisiert und entfernt).composer.lockDatei entsprechend den Änderungen.Stand: composer help update:
Der Befehl update liest die
composer.jsonDatei 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 updateundcomposer 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.lockund 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 installzu einer anderen Zeit ausgeführt wird.Was ist, wenn wir immer eine EXAKTE Version verwenden, composer.jsonwie z "monolog/monolog": "1.0.1".
Wir brauchen immer noch, composer.lockweil composer.jsonnur 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.lockam 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.