Composer fund 命令不支持 --format 参数,仅输出纯文本;结构化数据需用 composer show --no-dev --format=json 提取 support.funding 字段,并用 jq 等工具解析归一化。

composer fund 命令不支持 --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) - 原生 JSON 不含“赞助平台图标”或“推荐金额”,需自行映射(如
"github" → "https://github.com/sponsors/{user}")
快速提取 funding 字段的 shell 方案
用 jq 解析 composer show 输出是最轻量的做法(无需写 PHP 脚本):
composer show --no-dev --format=json | jq -r '.[] | select(.support?.funding) | "\(.name) \(.support.funding[].url)"'
常见变体:
- 只取 GitHub Sponsors 链接:
jq -r '.[] | select(.support?.funding) | .support.funding[] | select(.type == "github") | "\(.url)"' - 生成 Markdown 列表:
jq -r '.[] | select(.support?.funding) | .support.funding[] | "- [\(.type)](\(.url)) — \(.name)"' - 过滤空 URL 或无效 type:
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://github.com/sponsors/foo,有的只写 foo,还有的混用 custom 类型塞邮箱或 PayPal 链接。










