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

2022-08-30 17:35:30

我正在尝试在cakphp安装上运行作曲家安装,但是它询问用户是否要设置文件夹权限:

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

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 安装不需要交互,并且我们的部署过程可以正常工作(不涉及用户!我已经尝试了几件事,检查了代码,并疯狂地谷歌搜索无济于事。

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


答案 1

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

根据文档,每当需要交互式操作时,这将触发 Composer 选择默认选项:

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

答案 2

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

但是,Composer 有时会询问需要答案的问题。例如:

composer update

...

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

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

为避免此错误,救援命令:--no-interactionyes

yes | composer update

推荐