composer fund 命令真实存在,是 Composer 2.2+ 内置命令,仅读取依赖包 composer.json 中的 funding 字段(数组格式),不识别 .github/FUNDING.yml;低于 2.2 版本会报错“Command not defined”。

composer fund 命令到底存不存在?
composer fund 是 Composer 2.2+ 官方内置命令,真实存在且开箱可用,不是插件、不是提示语、也不是误传的别名。但它的行为常被混淆:它不等同于安装时的 funding 提示,也不等于 composer show 中自动显示的 FUNDING.yml 内容。
关键区别在于数据来源:
-
composer fund只读取各依赖包composer.json中声明的funding字段(数组格式) -
composer show vendor/package末尾显示的funding:行,可能来自.github/FUNDING.yml(v2.2+ 支持),与composer.json里的funding字段无关 - 两者互不干扰,可共存,也可只存在其一
如果你运行 composer fund 报错 Command "fund" is not defined,说明 Composer 版本低于 2.2 —— 这是唯一合理的报错原因。
怎么用 composer fund 查出真正能点的赞助链接?
执行命令本身极简单:composer fund,但它是否“有结果”,完全取决于你项目里哪些依赖包在自己的 composer.json 中写了合规的 funding 字段。
常见有效配置示例(必须是数组,每个元素含 type 和 url):
"funding": [
{ "type": "github", "url": "https://github.com/sponsors/twigphp" },
{ "type": "opencollective", "url": "https://opencollective.com/symfony" }
]
运行后终端会输出类似:
monolog/monolog → https://github.com/sponsors/Seldaek symfony/console → https://symfony.com/sponsor
注意:
- 链接默认是纯文本;若终端支持(如 Windows Terminal、iTerm2),点击即可打开浏览器
- 不支持批量跳转,但可用
composer fund | awk '{print $3}' | xargs -n1 open(macOS/Linux)辅助 - 没出现在列表里的包 ≠ 不能赞助,只是没填
funding字段(比如很多包只放了.github/FUNDING.yml)
为什么有些包明明有 GitHub Sponsors 却不显示?
这是最常踩的坑:把 .github/FUNDING.yml 和 composer.json 的 funding 字段当成一回事。
-
composer fund完全忽略.github/FUNDING.yml - 它只扫描已安装包的
vendor/*/composer.json文件,并严格匹配"funding"键 - 即使包仓库里有
.github/FUNDING.yml,只要composer.json没写funding,composer fund就不会列出它
验证方式很简单:
composer show monolog/monolog | grep funding
如果输出空,说明该包没在 composer.json 里声明 funding,哪怕它的 GitHub 主页挂着 Sponsors 按钮也没用。
想支持某个包但它没出现在 fund 列表里,还能怎么办?
别急着换包,先确认它是否提供了其他公开入口:
- 运行
composer show vendor/package,看source字段指向哪个 GitHub/GitLab 仓库,然后手动访问其.github/FUNDING.yml(路径如https://www.php.cn/link/0b080540f817dd397faae9a6029d7eb3) - 检查
composer.json的support区域,有些作者把链接放在support.email或support.docs里 - 运行
composer thanks vendor/package—— 如果包配置了extra.thanks,它会帮你跳转到上游维护者页面(比如 Webpack Encore → Symfony)
真正容易被忽略的是:资助信息的可见性,不取决于工具多强大,而取决于包作者是否主动填写了那一段 JSON。Composer 只负责读,不负责补全、不校验、不提示缺失。










