¿Cómo puedo ejecutar el compositor sin la interacción del usuario?

2 minutos de lectura

Avatar de usuario de John Hunt
Juan caza

Estoy tratando de ejecutar la instalación del compositor en una instalación de cakephp, sin embargo, le pregunta al usuario si quiere establecer permisos de carpeta:

Tenga en cuenta que este es un ejemplo. En producción el composer install El comando sucederá automáticamente a través de CI o lo que sea:

John:$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
> Cake\Composer\Installer\PluginInstaller::postAutoloadDump
> App\Console\Installer::postInstall
Set Folder Permissions ? (Default to Y) [Y,n]?

Esto es genial, pero hay momentos en los que quiero especificar ‘sí’ desde la línea de comando para que la instalación de mi ventana acoplable no requiera interacción, y para que nuestro proceso de implementación pueda funcionar (¡no hay ningún usuario involucrado!) He Intenté varias cosas, inspeccioné el código y busqué en Google como un loco sin éxito.

Supongo que hay una variable de entorno que puedo configurar para que sea sí/silencioso por defecto, pero no puedo encontrar cuál es.

  • Hace composer install --no-interaction ¿trabajar? De lo contrario, siempre puede configurar el Installer::postInstall comando para dejar de hacer preguntas 😉

    – Mira

    13 de abril de 2018 a las 9:01

  • Esto funcionó, responda como respuesta y lo marcaré como correcto, ¡gracias! 🙂

    – Juan Caza

    13 de abril de 2018 a las 9:03

  • Hecho. ¡Encantado de ayudar!

    – Mira

    13 de abril de 2018 a las 9:05

Avatar de usuario de Loek
mirar

Intentar composer install --no-interaction o composer install -n

De acuerdo con la documentación esto hace que Composer elija la opción predeterminada siempre que sea necesaria una acción interactiva:

--no-interaction (-n): Do not ask any interactive question.

  • En mi caso, el valor predeterminado es “no” y la operación falla. ¿Hay alguna manera de seleccionar “sí” automáticamente?

    – MilanG

    11 de marzo de 2019 a las 13:35

  • composer install --no-scripts me viene a la mente. Sin embargo, probablemente omitirá pasos que son importantes para usted. No composer install -y ¿trabajar?

    – Mira

    12 de marzo de 2019 a las 7:57

  • si el valor predeterminado es Sí, ¿cómo configurar No como respuesta?

    – famas23

    5 de diciembre de 2021 a las 16:25


Como se dijo en las respuestas anteriores. --no-interaction o -n El parámetro es la forma oficial de deshabilitar la interacción regular del usuario en todos los comandos del compositor. Para más información consulta las opciones globales disponibles: https://getcomposer.org/doc/03-cli.md#global-options

Sin embargo, Composer a veces hace preguntas que necesitan una respuesta. Por ejemplo:

composer update

...

In GitDownloader.php line 112:
                                                                                                                                   
The .git directory is missing from ..., see https://getcomposer.org/commit-deps for more information

En estos casos, si el --no-interaction se especifica el parámetro, Composer falla con un error.

para evitar el --no-interaction error, el yes comando al rescate:

yes | composer update

¿Ha sido útil esta solución?