如何在没有用户交互的情况下运行composer?

Joh*_*unt 6 php cakephp composer-php

我正在尝试在cakephp安装上运行composer install,但它询问用户是否要他们想要设置文件夹权限:

注意,这是一个例子.在生产中,composer install命令将通过CI或其他任何方式自动发生:

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]?
Run Code Online (Sandbox Code Playgroud)

这很好,但有时候我想从命令行指定'yes',这样我的docker安装就不需要交互了,所以我们的部署过程可以工作(没有用户参与!)我已经尝试了几件事,检查了代码并用疯子谷歌搜索无济于事.

我猜有一个环境变量我可以设置为默认为yes/quiet,但我找不到它是什么.

Loe*_*oek 14

尝试 composer install --no-interaction

根据文档,只要需要进行交互操作,这就会触发Composer选择默认选项.

  • 在我的情况下,默认值为“否”并且操作失败?有没有办法自动选择“是”? (4认同)

Ani*_*hez 10

如前面的答案--no-interaction-n参数中所述,是禁用所有 Composer 命令上的常规用户交互的官方方法。有关更多信息,请检查可用的全局选项:https://getcomposer.org/doc/03-cli.md#global-options

然而,Composer 有时会提出需要答案的问题。例如:

composer update

...

In GitDownloader.php line 112:
                                                                                                                                   
The .git directory is missing from ..., see https://getcomposer.org/commit-deps for more information
Run Code Online (Sandbox Code Playgroud)

在这些情况下,如果--no-interaction指定了该参数,则 Composer 将失败并出现错误。

为了避免该--no-interaction错误,yes可以使用以下命令进行救援:

yes | composer update
Run Code Online (Sandbox Code Playgroud)