¿Cuáles son las diferencias entre composer updatey composer install?
¿Cuáles son las diferencias entre composer updatey 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.1versión del paquete, la ejecución composer updateprovocará una actualización de este paquete (por ejemplo 0.9.2, si ya se ha lanzado)
en detalle composer update:
composer.jsoncomposer.jsoncomposer.lockpara almacenar la versión de los paquetes instaladosinstalación del compositor
composer installno actualizará nada; solo instalará todas las dependencias como se especifica en el composer.lockarchivo
En detalle:
composer.lockexiste el archivo (si no, ejecútelo composer-updatey créelo)composer.lockarchivocomposer.lockarchivoCuándo instalar y cuándo actualizar
composer updatese usa principalmente en la 'fase de desarrollo', para actualizar nuestros paquetes de proyecto de acuerdo con lo que hemos especificado en el composer.jsonarchivo,
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 updateactualiza las dependencias en su repositorio global en el sistema local ( COMPOSER_HOMEvariable env)
composer updateen 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 installcomposer.lock existe
composer.lockarchivo.composer.locklo hace , no existir.
composer.json .composer.lockarchivo basado en los paquetes instalados.Según composer help install:
El comando de instalación lee el
composer.lockarchivo 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.jsony hará lo mismo.
composer updatecomposer.json archivo (instala, actualiza y elimina).composer.lockarchivo de acuerdo con los cambios.Según composer help update:
El comando de actualización lee el
composer.jsonarchivo 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 updateycomposer 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.locky en composer.json, hay una dependencia "monolog/monolog": "1.0.*"o "monolog/monolog": "^1.0".
Entonces, tendrá algunos casos
composer installen un momento diferente.¿Qué pasa si siempre usamos una versión EXACTA composer.jsoncomo en "monolog/monolog": "1.0.1"?
Todavía necesitamos composer.lockporquecomposer.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.lockal 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.