【问题标题】:How can I run composer without user interaction?如何在没有用户交互的情况下运行作曲家?
【发布时间】:2018-04-13 08:49:17
【问题描述】:

我正在尝试在 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]?

这很好,但有时我想从命令行指定“是”,以便我的 docker install 不需要交互,这样我们的部署过程就可以工作(没有用户参与!)我尝试了几件事,检查了代码并疯狂地用谷歌搜索无济于事。

我猜我可以设置一个环境变量以使其默认为是/安静,但我就是找不到它是什么。

【问题讨论】:

  • composer install --no-interaction 有效吗?否则,您可以随时配置 Installer::postInstall 命令停止提问;)
  • 这有效,请作为答案回复,我会将其标记为正确 - 谢谢! :)
  • 完成。很高兴为您提供帮助!

标签: php cakephp composer-php


【解决方案1】:

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

根据documentation,这会触发 Composer 在需要交互操作时选择默认选项:

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

【讨论】:

  • 在我的情况下默认为“否”并且操作失败?有没有办法自动选择“是”?
  • composer install --no-scripts 浮现在脑海中。它可能会跳过对您很重要的步骤。 composer install -y 不工作吗?
  • 如果默认是Yes,如何设置No作为答案?
【解决方案2】:

如前面的答案中所述,--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

【讨论】:

    猜你喜欢
    • 2010-11-21
    • 2018-06-16
    • 2014-12-10
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多