funding 字段是声明式元数据,仅用于向用户展示资助渠道,不参与安装或自动收款;需严格按 Packagist 白名单写 type(如 github、patreon,大小写敏感)和完整 HTTPS url,且须同步至 Packagist 才生效。

composer.json 里的 funding 字段到底起什么作用?
它本身不自动收钱、不触发打赏、也不影响依赖安装流程——只是一个「声明式元数据」。Composer 官方工具(如 composer fund)和 Packagist 网站会读取这个字段,向用户展示项目接受资助的渠道,本质是降低支持门槛,把“想支持但找不到入口”的人引过去。
怎么写才被 composer fund 正确识别?
必须用标准格式,且只支持特定平台类型。Packagist 文档明确列出受支持的 type 值(如 github、patreon、tidelift),拼错或自定义类型会被忽略。
-
type必须是字符串,且在官方白名单内(大小写敏感,github✅,GitHub❌) -
url必须是完整可访问的 HTTPS 链接(https://github.com/sponsors/username✅,sponsor/username❌) - 多个资助渠道可以并列,但每条都需符合规则,否则整条被跳过
{
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/myorg"
},
{
"type": "patreon",
"url": "https://www.patreon.com/myproject"
}
]
}
运行 composer fund 时为什么看不到你的项目?
常见原因不是配置写错了,而是没同步到 Packagist。Composer 本地读不到 funding,它依赖 Packagist API 返回的数据。即使你本地 composer.json 已更新,也必须:
- 确保包已提交到 Packagist(不是仅在 GitHub 存在)
- 触发 Packagist 的自动更新(push tag 或手动 sync)
- 等待几秒到几分钟,让 Packagist 重新抓取并解析
composer.json
验证方式:打开 https://packagist.org/packages/vendor/name,页面右上角出现 ? 图标才算生效。
和 support 字段有什么区别?
support 是给用户「找帮助」的(比如 issue tracker、forum、email),而 funding 是给用户「给支持」的。两者语义完全分离,互不影响。有人误把 PayPal 链接塞进 support.email,这既违反字段本意,也不会出现在 composer fund 列表里。
一个容易被忽略的细节:如果项目有多个维护者,funding 指向的是组织或项目主账户,不是某个开发者的个人主页——除非你明确希望资助流向个人。










