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

Posted

技术标签:

【中文标题】运行作曲家命令时有没有办法隐藏“资金”消息?【英文标题】:Is there a way to hide "funding" messages when running composer commands? 【发布时间】:2020-12-23 04:20:00 【问题描述】:

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

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

我想知道是否有类似this answer for npm 的解决方案,但针对 Composer。

有没有办法隐藏有关项目需要资金的消息?我检查了composer --help 的输出,没有看到任何明显的标志。

【问题讨论】:

【参考方案1】:

没有针对这两行的特定标志。

您始终可以使用--quiet 来消除所有输出,并完全静默运行。

如果由于某种原因您对这两行特别感到困扰,但又不想丢失其余的输出,则可以始终将stderr 传递到grep 并排除这些行:

 composer update 2> >(grep -v "composer fund" | grep -v "looking for funding")

结果:

请注意,上面的屏幕截图中明显没有提及资金。

这一切是否值得做,我会留给你。

【讨论】:

您可以通过-e:composer update 2> >(grep -v -e "composer fund" -e "looking for funding") 提供多个模式,将 2 个grep 命令“合并”为一个。【参考方案2】:

垃圾邮件!在你的终端!当“好人”这样做时更糟!

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

您需要已经为此安装了 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

src/Composer/Installer.php 中将if ($fundingCount) 替换为if (FALSE)

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 中,供我们公司所有开发人员的桌面使用。

【讨论】:

我不会考虑为“违反信任”申请资金。 会考虑不请自来的垃圾邮件,即使是好人。会认为在我的终端中违反信任。与 Canonical / Microsoft 向其操作系统发送垃圾邮件商业优惠相同。 微软有很多钱。开源维护者正在志愿服务。

以上是关于运行作曲家命令时有没有办法隐藏“资金”消息?的主要内容,如果未能解决你的问题,请参考以下文章

运行显示绘图的脚本时隐藏主八度音阶窗口

有没有办法在 Ace Editor 中隐藏行号?

运行 Xamarin.UITests 时有没有办法让应用程序选择语言或文化

C# Directory.GetFiles()获取文件时如果是根目录时有隐藏文件则报错的处理

有没有办法隐藏标准的 Facebook 聊天栏(无需离线)?

有没有办法通过 windows cmd 在幕后(隐藏)运行 Elasticsearch 和 Kibana? [关闭]