Quali sono le differenze tra composer update
e composer install
?
Quali sono le differenze tra composer update
e composer install
?
Risposte:
aggiornamento del compositore
composer update
aggiornerà le tue dipendenze come sono specificate in composer.json
Ad esempio, se si richiede questo pacchetto come dipendenza:
"mockery/mockery": "0.9.*",
e hai effettivamente installato la 0.9.1
versione del pacchetto, l'esecuzione composer update
causerà un aggiornamento di questo pacchetto (ad esempio 0.9.2
, se è già stato rilasciato)
in dettaglio composer update
:
composer.json
composer.json
composer.lock
per memorizzare la versione dei pacchetti installatiinstallazione del compositore
composer install
non aggiornerà nulla; installerà semplicemente tutte le dipendenze come specificato nel composer.lock
file
In dettaglio:
composer.lock
file esiste (in caso contrario, eseguilo composer-update
e crealo)composer.lock
filecomposer.lock
fileQuando installare e quando aggiornare
composer update
viene utilizzato principalmente nella "fase di sviluppo", per aggiornare i nostri pacchetti di progetti in base a quanto specificato nel composer.json
file,
composer install
viene utilizzato principalmente nella "fase di distribuzione" per installare la nostra applicazione su un server di produzione o in un ambiente di test, utilizzando le stesse dipendenze memorizzate nel file composer.lock creato dall'aggiornamento del compositore.
composer global update
aggiorna le dipendenze nel tuo repository globale sul sistema locale ( COMPOSER_HOME
variabile env)
composer update
sul tuo sistema locale e testare la tua applicazione, quindi caricare il composer.lock sul tuo server di produzione ed eseguirecomposer install
Quando lo esegui composer install
cercherà un file di blocco e installerà tutto ciò che è contenuto, se non riesce a trovarne uno, leggerà composer.json
, installerà le sue dipendenze e genererà un file di blocco .
Quando lo esegui composer update
, legge semplicemente composer.json
, installa le dipendenze e aggiorna il file di blocco (o crea un nuovo file di blocco).
composer install
composer.lock
esiste.
composer.lock
file.composer.lock
non non esiste.
composer.json
.composer.lock
file in base ai pacchetti installati.Secondo composer help install
::
Il comando install legge il
composer.lock
file dalla directory corrente, lo elabora e scarica e installa tutte le librerie e le dipendenze descritte in quel file. Se il file non esiste, cercheràcomposer.json
e farà lo stesso.
composer update
composer.json
file (installa, aggiorna e rimuove).composer.lock
file in base alle modifiche.Secondo composer help update
::
Il comando update legge il
composer.json
file dalla directory corrente, lo elabora e aggiorna, rimuove o installa tutte le dipendenze.
Vedi anche: Compositore: è tutto sul file di blocco
La migliore differenza tra composer update
ecomposer install
installazione del compositore
Per aggiungere dipendenze è necessario aggiungerlo manualmente al file composer.json.
Se esiste il file composer.lock, installa esattamente ciò che è specifico su questo file
Nessun componente verrà aggiornato con questo comando.
aggiornamento del compositore
Per aggiungere o rimuovere dipendenze è necessario aggiungerlo manualmente al file composer.json
Se non riesci (o non sai come aggiungere o rimuovere una libreria che è in effetti facile, basta aggiungere il nome della dipendenza e la versione nella proprietà request del file) modificare manualmente il file composer.json oppure tu preferisco usare la riga di comando, invece, il compositore ha funzioni speciali per questo:
compositore richiede
Ad esempio, se vogliamo aggiungere una dipendenza con la riga di comando, eseguiremo semplicemente
composer require twig/twig
il compositore rimuove
Se desideri rimuovere una dipendenza non utilizzata, eseguiremo semplicemente:
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
Perché abbiamo bisogno di 2 comandi. Penso che possa spiegare da compositore.lock.
Immagina, NON abbiamo composer.lock
e dentro composer.json
, c'è una dipendenza "monolog/monolog": "1.0.*"
o "monolog/monolog": "^1.0"
.
Quindi, avrà alcuni casi
composer install
in un altro momento.Cosa succede se utilizziamo sempre una versione EXACT composer.json
come "monolog/monolog": "1.0.1"
?
Ne abbiamo ancora bisogno composer.lock
perché composer.json
traccia solo la versione principale della tua dipendenza, non può tracciare la versione delle dipendenze della dipendenza.
Cosa succede se tutte le dipendenze della dipendenza utilizzano anche la versione EXACT?
Immagina di iniziare con TUTTE le dipendenze che utilizzano la versione EXACT, quindi non ti interessa composer.lock
. Tuttavia, alcuni mesi dopo, si aggiunge una nuova dipendenza (o si aggiorna la vecchia dipendenza) e le dipendenze di questa dipendenza non utilizzano la versione EXACT. Quindi è meglio prendersi cura composer.lock
all'inizio.
Oltre a ciò, c'è un vantaggio di una versione semantica rispetto a una versione esatta. Potremmo aggiornare la dipendenza molte volte durante lo sviluppo e la libreria presenta spesso alcune piccole modifiche come la correzione di bug. Quindi è più semplice aggiornare la dipendenza che utilizza la versione semantica.