使用 Composer 时,有时在安装或更新后会显示消息:
X packages you are using are looking for funding.
Use the `composer fund` command to find out more!
我想知道是否有类似于 这个针对 npm 的答案,但针对 Composer 的解决方案。
有没有办法隐藏有关需要资金的项目的消息?我检查了composer --help
的输出,没有看到任何明显的标志。
但是这是开源的,所以让我们修复它。
您需要为此安装 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 中,供我们公司所有开发人员的桌面使用。