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

时间:2018-04-13 08:49:18

标签: 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]?

这很好,但有时候我想从命令行指定'yes',这样我的docker install就不需要交互了,这样我们的部署过程就可以工作了(没有用户参与!)我已经试过几件事情,检查代码和一派疯狂无济于事。

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

2 个答案:

答案 0 :(得分:12)

尝试composer install --no-interactioncomposer install -n

根据documentation,每当需要采取交互式操作时,这会触发Composer选择默认选项:

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

答案 1 :(得分:0)

如先前答案--no-interaction-n所述,参数是在所有作曲者命令上禁用常规用户交互的正式方法。有关更多信息,请检查可用的全局选项: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

在这些情况下,如果指定了--no-interaction参数,则Composer会失败并显示错误。

为避免出现--no-interaction错误,请使用yes命令进行救援:

yes | composer update