
Composer fund 命令不支持 --format 参数,仅输出纯文本;结构化数据需用 composer show --no-dev --format=json 提取 support.funding 字段,并用 jq 等工具解析归一化。
--format 参数直接运行 composer fund --format json 会报错:Unrecognized option: --format。Composer 官方的 fund 命令(自 2.2+ 引入)目前仅输出纯文本列表,**没有内置格式化选项**,也不接受 --format、-o json 等参数。
fund 命令本身真正能拿到可解析数据的入口是 composer show --no-dev --format=json 输出的包元数据,其中部分包在 support 字段里包含 funding 数组(Composer 2.5+ 支持)。但注意:
composer show 只查当前项目已安装的包,不是所有可赞助包funding 字段内容取决于包作者是否按 Composer Schema 正确填写,格式不统一(可能含 type、url,偶有 email 或 custom)"github" → "https://github.com/sponsors/{user}")用 jq 解析 composer show 输出是最轻量的做法(无需写 PHP 脚本):
composer show --no-dev --format=json | jq -r '.[] | select(.support?.funding) | "\(.name) \(.support.funding[].url)"'
常见变体:
jq -r '.[] | select(.support?.funding) | .support.funding[] | select(.type == "github") | "\(.url)"'
jq -r '.[] | select(.support?.funding) | .support.funding[] | "- [\(.type)](\(.url)) — \(.name)"'
select(.url and (.type | test("^(github|patreon|opencollective|tidelift)$")))
composer fund 未来加 --format
该命令定位是终端友好型提示(类似 npm fund),而非数据导出工具。Composer 团队明确表示其输出为 human-readable only,机器解析应走 show --format=json + funding 字段。如果你依赖自动化处理,重点该放在清洗和归一化 funding 数组——不同包填的 URL 差异很大,比如有的写 https,有的只写 
foo,还有的混用 custom 类型塞邮箱或 PayPal 链接。