运行composer命令时有没有办法隐藏“资金”消息?

问题描述 投票:0回答:3

使用 Composer 时,有时在安装或更新后会显示消息:

X packages you are using are looking for funding.
Use the `composer fund` command to find out more!

我想知道是否有类似于 这个针对 npm 的答案,但针对 Composer 的解决方案。

有没有办法隐藏有关需要资金的项目的消息?我检查了

composer --help

 的输出,没有看到任何明显的标志。

php composer-php
3个回答
10
投票
没有针对这两条线的特定标志。

您始终可以使用

--quiet

 删除所有输出,并完全静音运行。

如果由于某种原因你对这两行特别困扰,但又不想丢失其余的输出,你可以随时通过管道

stderr

 穿过 
grep
 并排除这些行:

composer update 2> >(grep -v "composer fund" | grep -v "looking for funding")
结果是:

composer php output, without the

请注意上面的屏幕截图中明显缺乏任何资金参考。

如果这一切值得或不值得做,我就交给你了。


0
投票

只需查看此设置作曲家

COMPOSER_FUND# 如果设置为 0,此环境会在安装时抑制资金通知。


-1
投票
垃圾邮件!在你的终端里!当“好人”这样做时更糟糕!

但是这是开源的,所以让我们修复它。

您需要为此安装 Composer(您需要 Composer 来像这样编译 Composer)。

您还需要

jq

大家一起:

sudo apt install jq cd "$(mktemp -d)" ver=$(curl -s 'https://getcomposer.org/versions' | jq -r '.stable[0].version') git clone https://github.com/composer/composer.git . git checkout ${ver} unset ver sed -Ei 's/^(\s+if\s?\()\$fundingCount(\) \{)$/\1FALSE\2/g' ./src/Composer/Installer.php composer install composer compile composer_location=$(which composer) if [[ -f "${composer_location}" ]]; then \cp -f composer.phar "${composer_location}" chmod u+x "${composer_location}" fi unset composer_location
另外:

安装

jq

sudo apt install jq
创建一个临时文件夹并将目录更改为它:

cd "$(mktemp -d)"
获取最新稳定Composer的版本号并将其存储在

ver

变量中:

ver=$(curl -s 'https://getcomposer.org/versions' | jq -r '.stable[0].version')
将 Composer git 存储库克隆到此临时目录,并在 Composer 的最新稳定版本中查看代码:

git clone https://github.com/composer/composer.git . git checkout ${ver}
自行清理,取消设置我们不打算再次使用的 

ver

 变量。

unset ver

if ($fundingCount) {

 中的 
if (FALSE) {
 替换为 
src/Composer/Installer.php

sed -Ei 's/^(\s+if\s?\()\$fundingCount(\) \{)$/\1FALSE\2/g' ./src/Composer/Installer.php
获取编译Composer的依赖,但是使用Composer(这就是为什么你需要先安装Composer)。我的意思是,你可以手动执行此操作,但是哎呀,为什么。

composer install
使用当前经过更改的代码库编写一个新的 

composer.phar

composer compile
将 Composer 二进制文件的当前位置存储在变量中。

composer_location=$(which composer)
万一您为 Composer 命令添加了别名,在这种情况下,将不会保存文件名的位置,我们会检查它是否是一个文件,然后继续将其替换为新文件,并使新文件可由您执行,用户。

if [[ -f "${composer_location}" ]]; then \cp -f composer.phar "${composer_location}" chmod u+x "${composer_location}" fi
cp 前面的反斜杠也是一个别名破坏者。人们通常将 

cp

 别名为 
cp -i
,我们只是希望它现在就可以工作。

最后只需将

composer_location

 变量取消设置即可。

如果您遵循该 sed 行中的正则表达式,那就太好了,如果没有,最好跳过该行并手动应用更改,以便您知道自己的设备上发生了什么,

vim src/Composer/Installer.php

,然后将 
if ($fundingCount) {
 替换为 
if (FALSE) {

当然,这意味着您正在运行未签名的作曲家副本(更改是您自己的)。但既然他们已经破坏了你的信任,谁会关心那个“信任”链。

此外,如果您运行

composer self-update

,它将再次用未打补丁的 Composer 替换您的 Composer,您将必须再次执行这些步骤。由于他们违反了您的信任(是的,再次),最好像这样手动更新(只需再次按照这些步骤操作,您也会更新),我只是将其放入 Ansible 中,供我们公司所有开发人员的桌面使用。

© www.soinside.com 2019 - 2024. All rights reserved.