作曲家安装时如何跳过建议

How to skip suggestions when composer installing

在本地,当我 运行 composer install 它没有显示任何关于建议的信息。在我们的 CI 环境中,它提供了一长串我想避免的建议。我想看到从缓存中加载的内容的输出以及类似的东西,只是不想看到这个。我已经阅读了文档,但无法弄清楚如何隐藏它。

这些建议是(除其他外)...

symfony/security-core suggests installing symfony/expression-language (For using the expression voter)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
predis/predis suggests installing ext-phpiredis (Allows faster serialization and deserialization of the Redis protocol)
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)
phpseclib/phpseclib suggests installing pear-pear/PHP_Compat (Install PHP_Compat to get phpseclib working on PHP < 4.3.3.)
patchwork/utf8 suggests installing ext-intl (Use Intl for best performance)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)

如何隐藏这个输出?

当你在一个有 composer.lock 文件的项目上 运行 composer install 时,它只会安装锁定在 composer.lock 文件中的版本,什么都不安装。换句话说,需要的包和版本已经解决了,只是在安装而已。

当你运行 composer install 在一个没有 composer.lock 文件的项目上时,Composer 将解析所需的包及其版本并将其存储在 composer.lock 文件中在安装它们之前。在这种情况下,项目未设置,您会收到有关其他建议包的通知。

在第二种情况下,您无法从输出中隐藏建议的包列表(至少,在撰写此答案时)。在第一种情况下,没有什么是新的,所以根本没有显示。

解决方案是将您的 composer.lock 文件推送到服务器,毕竟这是一个很好的做法(您不希望您的生产服务器具有与开发环境不同的依赖项版本,较新的版本可能会破坏您的网站)。

从 composer 1.6.3 开始,有一个 --no-suggest 选项可以在 运行 composer install or composer update.

时隐藏所有建议

composer 1.6.3 以来,--no-suggest 没有显示任何有关建议的信息。但在 composer 2 中,此选项已弃用,它没有任何作用,并且会在 composer 3 中中断(有关详细信息,请参阅 this link)。

希望对 2021 年有所帮助!