¿Cuáles son las diferencias entre composer update
y composer install
?
¿Cuáles son las diferencias entre composer update
y composer install
?
Respuestas:
actualización del compositor
composer update
actualizará sus dependencias como se especifican en composer.json
Por ejemplo, si necesita este paquete como dependencia:
"mockery/mockery": "0.9.*",
y realmente ha instalado la 0.9.1
versión del paquete, la ejecución composer update
provocará una actualización de este paquete (por ejemplo 0.9.2
, si ya se ha lanzado)
en detalle composer update
:
composer.json
composer.json
composer.lock
para almacenar la versión de los paquetes instaladosinstalación del compositor
composer install
no actualizará nada; solo instalará todas las dependencias como se especifica en el composer.lock
archivo
En detalle:
composer.lock
existe el archivo (si no, ejecútelo composer-update
y créelo)composer.lock
archivocomposer.lock
archivoCuándo instalar y cuándo actualizar
composer update
se usa principalmente en la 'fase de desarrollo', para actualizar nuestros paquetes de proyecto de acuerdo con lo que hemos especificado en el composer.json
archivo,
composer install
se utiliza principalmente en la 'fase de implementación' para instalar nuestra aplicación en un servidor de producción o en un entorno de prueba, utilizando las mismas dependencias almacenadas en el archivo composer.lock creado por la actualización del compositor.
composer global update
actualiza las dependencias en su repositorio global en el sistema local ( COMPOSER_HOME
variable env)
composer update
en su sistema local y probar su aplicación, luego cargar el composer.lock en su servidor de producción y ejecutarcomposer install
Cuando lo ejecute composer install
, buscará un archivo de bloqueo e instalará todo lo que contenga; si no puede encontrar uno, leerá composer.json
, instalará sus dependencias y generará un archivo de bloqueo.
Cuando lo ejecuta composer update
, simplemente lee composer.json
, instala las dependencias y actualiza el archivo de bloqueo (o crea un nuevo archivo de bloqueo).
composer install
composer.lock
existe
composer.lock
archivo.composer.lock
lo hace , no existir.
composer.json
.composer.lock
archivo basado en los paquetes instalados.Según composer help install
:
El comando de instalación lee el
composer.lock
archivo desde el directorio actual, lo procesa y descarga e instala todas las bibliotecas y dependencias descritas en ese archivo. Si el archivo no existe, buscarácomposer.json
y hará lo mismo.
composer update
composer.json
archivo (instala, actualiza y elimina).composer.lock
archivo de acuerdo con los cambios.Según composer help update
:
El comando de actualización lee el
composer.json
archivo del directorio actual, lo procesa y actualiza, elimina o instala todas las dependencias.
Ver también: Compositor: se trata del archivo de bloqueo
La mejor diferencia entre composer update
ycomposer install
instalación del compositor
Para agregar dependencias, debe agregarlo manualmente al archivo composer.json.
Si existe el archivo composer.lock, instale exactamente lo que se especifica en este archivo
No se actualizará ningún componente con este comando.
actualización del compositor
Para agregar o eliminar dependencias, debe agregarlo manualmente al archivo composer.json
Si no puede (o no sabe cómo agregar o eliminar una biblioteca que de hecho es fácil, simplemente agregue el nombre de la dependencia y la versión en la propiedad require del archivo) modifique el archivo composer.json manualmente o usted prefiero usar la línea de comando, el compositor tiene funciones especiales para esto:
compositor requiere
Por ejemplo, si queremos agregar una dependencia con la línea de comando, simplemente ejecutaremos
composer require twig/twig
compositor eliminar
Si desea eliminar una dependencia no utilizada, ejecutaremos simplemente:
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
Por qué necesitamos 2 comandos. Creo que se puede explicar por composer.lock.
Imagínese, NO tenemos composer.lock
y en composer.json
, hay una dependencia "monolog/monolog": "1.0.*"
o "monolog/monolog": "^1.0"
.
Entonces, tendrá algunos casos
composer install
en un momento diferente.¿Qué pasa si siempre usamos una versión EXACTA composer.json
como en "monolog/monolog": "1.0.1"
?
Todavía necesitamos composer.lock
porquecomposer.json
solo rastrea la versión principal de su dependencia, no puede rastrear la versión de dependencias de dependencia.
¿Qué pasa si todas las dependencias de dependencia también usan la versión EXACT?
Imagine que comienza con TODAS las dependencias que usan la versión EXACTA, entonces no le importa composer.lock
. Sin embargo, unos meses después, agrega una nueva dependencia (o actualiza la antigua), y las dependencias de esta dependencia no usan la versión EXACT. Entonces es mejor cuidar composer.lock
al principio.
Además de eso, hay una ventaja de una versión semántica sobre una versión exacta. Podemos actualizar la dependencia muchas veces durante el desarrollo y la biblioteca a menudo tiene algunos pequeños cambios, como la corrección de errores. Entonces es más fácil actualizar la dependencia que usa la versión semántica.