¿Cuáles son las diferencias entre composer updatey composer install?
fuente
¿Cuáles son las diferencias entre composer updatey composer install?
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 installCuando 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 leecomposer.json, instala las dependencias y actualiza el archivo de bloqueo (o crea un nuevo archivo de bloqueo).fuente
composer installcomposer.lockexistecomposer.lockarchivo.composer.locklo hace , no existir.composer.json.composer.lockarchivo basado en los paquetes instalados.Según
composer help install:composer updatecomposer.jsonarchivo (instala, actualiza y elimina).composer.lockarchivo de acuerdo con los cambios.Según
composer help update:Ver también: Compositor: se trata del archivo de bloqueo
fuente
La mejor diferencia entre
composer updateycomposer installinstalació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/twigcompositor eliminar
Si desea eliminar una dependencia no utilizada, ejecutaremos simplemente:
composer remove twig/twig --update-with-dependenciesfuente
instalación del compositor
actualización del compositor
Por qué necesitamos 2 comandos. Creo que se puede explicar por composer.lock.
Imagínese, NO tenemos
composer.locky encomposer.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.jsonsolo 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 cuidarcomposer.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.
fuente