运行作曲家命令时有没有办法隐藏“资金”消息?
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 向其操作系统发送垃圾邮件商业优惠相同。 微软有很多钱。开源维护者正在志愿服务。以上是关于运行作曲家命令时有没有办法隐藏“资金”消息?的主要内容,如果未能解决你的问题,请参考以下文章
运行 Xamarin.UITests 时有没有办法让应用程序选择语言或文化
C# Directory.GetFiles()获取文件时如果是根目录时有隐藏文件则报错的处理