funding字段是composer.json根级的可选声明式元数据,用于在composer show和packagist页面展示赞助链接(如github、patreon),不参与依赖解析、安装或支付,仅作静态信息呈现。

Composer 的 funding 字段只影响 composer show 和 Packagist 页面展示,不触发任何自动扣款或集成支付——它纯属声明式元数据,不是功能开关。
什么是 funding 字段?它出现在哪里
这是 composer.json 根对象下的一个可选字段,用于声明项目作者接受赞助的方式(如 GitHub Sponsors、Open Collective、PayPal 等)。Packagist 在包详情页、composer show vendor/package 命令输出中会读取并展示它。
它不参与依赖解析、安装流程,也不被 Composer 运行时读取或执行。
- 只在
composer.json顶层定义,不能放在require或autoload下 - 值必须是数组,每个元素是带
type和url键的对象 -
type推荐用 Packagist 官方认可的值(如github、patreon、open_collective),否则可能不显示图标
funding 字段的合法结构与常见写法
最简可用形式:
{
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/yourname"
}
]
}
支持多个入口,例如同时提供 GitHub Sponsors 和 Open Collective:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
{
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/yourname"
},
{
"type": "open_collective",
"url": "https://opencollective.com/yourproject"
}
]
}
-
url必须是完整、可访问的 HTTPS 链接;相对路径或mailto:会被忽略 -
type值区分大小写,Github或GitHub不被识别,必须小写(github) - 不支持嵌套字段(比如加
title或description),Packagist 只认type+url
为什么改了 funding 却没显示在 Packagist 上
Packagist 不实时拉取 composer.json。它只在你推送新 tag 或手动触发更新(如点击 “Update” 按钮)后,重新抓取 composer.json 并解析字段。
- 修改
composer.json后,必须提交并打新 tag(如v1.2.3),再推送到 GitHub/GitLab - 如果没打 tag,需登录 Packagist,进入包页面,点击右上角 “Update” 手动刷新元数据
- 检查 Packagist 页面右下角 “Source” 链接是否指向最新 commit —— 如果还是旧 commit,说明未同步成功
- 用
composer show vendor/package --all查看本地缓存内容,确认字段已写对且无语法错误
别把 funding 当成自动收款通道
它不会调用任何 API,不生成按钮,不集成 PayPal SDK,也不向用户弹窗请求赞助。唯一作用是让关心你项目的人,在查依赖时顺手看到赞助入口。
如果你需要实际收款能力,得自己在 README 加链接、建独立赞助页、或集成第三方服务(如 Lemon Squeezy、Buy Me a Coffee)——funding 字段只是个“名片栏”。
最容易被忽略的是:它完全依赖 Packagist 的元数据抓取机制,且只在公开包中生效;私有仓库即使写了这个字段,也不会被展示。










