composer fund 是 Composer 2.2+ 内置只读命令,从已安装依赖的 composer.json 中提取 funding 字段并展示赞助链接;无输出通常因包未声明该字段或版本过低。

composer fund 不是支付命令,也不是插件或扩展功能——它是 Composer 2.2+ 内置的只读命令,仅从已安装依赖的 composer.json 文件中提取 funding 字段并展示链接。
为什么运行 composer fund 没有输出?
常见原因不是命令错了,而是依赖包根本没填 funding 字段:
-
funding必须由包作者在自己项目的composer.json顶层手动声明,格式为数组,例如:"funding": [{"type": "github", "url": "https://github.com/sponsors/monolog"}] - 该字段区分大小写,
Funding或fundingUrl都无效 - 只有已成功
composer install进vendor/的包才会被扫描;dev-only 依赖、未启用的平台包(如某些私有仓库包)不会出现 - Composer 2.1 及更早版本不识别该命令,需先执行
composer self-update
composer fund 输出的链接能直接点击吗?
取决于终端环境,但行为完全由终端控制,Composer 不干预:
- iTerm2、Windows Terminal、GNOME Terminal 等现代终端通常自动识别 HTTPS 链接,
Ctrl+Click或Cmd+Click即可打开 - 纯文本终端(如 tmux 默认配置、某些 CI 日志)只显示文本,需手动复制粘贴
- 链接本身不经过 Composer 代理或跳转,也不发送任何数据——点击后直接访问第三方平台(GitHub Sponsors、Open Collective 等)
- 部分包提供多个
funding条目(如同时支持github和tidelift),命令会全部列出
想确认某个包是否支持赞助,但 composer fund 没列出来?
别急着怀疑命令失效,直接查源文件更可靠:
- 进入对应 vendor 目录:
cat vendor/guzzlehttp/guzzle/composer.json | grep -A 5 funding - 注意:有些包把
funding放在extra下(错误位置),这种不会被识别 - 若发现字段存在但未显示,检查是否用了 symlink 安装(如
composer install --no-dev后又删了 vendor 再软链),可能导致路径解析失败 - 间接依赖(如 A → B → C)只要 C 在 vendor 中真实存在且含有效
funding,就会出现在列表里,无需额外配置
真正容易被忽略的是:这个命令只反映“谁公开留了收款入口”,不反映“谁更需要支持”。很多小众但关键的工具库至今没配 funding 字段,而你每天都在用它们。要不要支持,得你自己点开链接看清楚再决定。











