funding字段仅在Packagist页面显示,需为含type和url的对象数组,type须用官方白名单值(如github、patreon),url必须是完整HTTPS链接;修改后需手动触发Packagist更新或配置正确Webhook才生效。

composer.json 里的 funding 字段怎么写才生效
Composer 不会自动展示或处理 funding 字段,它纯粹是元数据——只在 Packagist 页面上显示,且仅当包被提交/更新到 Packagist 后才可见。本地 composer install 或 composer require 完全无视它。
-
funding必须是数组,每个元素是带type和url的对象(type建议用 Packagist 认可的值,如github、patreon、open_collective) -
url必须是完整 HTTPS 链接,不能是相对路径或短链接;Packagist 会校验格式,填错会导致同步失败但不报具体错误 - 多个资助渠道可以并列,顺序无关,但 Packagist 只显示前 3 个(按数组顺序)
示例:
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/yourname"
},
{
"type": "patreon",
"url": "https://www.patreon.com/yourproject"
}
]
为什么改了 funding 却没在 Packagist 页面出现
最常见原因是没触发 Packagist 的元数据刷新——它不会监听你 GitHub 仓库的 composer.json 变更,必须手动操作或依赖 Webhook。
- 如果你用的是 Packagist.org(非私有),确认已为该包启用自动更新(Settings → “Automatically update this package” 已勾选)
- 检查 GitHub/GitLab 仓库是否配置了正确的 Packagist Webhook(Payload URL 应为
https://packagist.org/api/github,Content type 选application/json) - 手动强制刷新:进 Packagist 包页面 → 点右上角 “Update” 按钮(需有维护者权限)
- 注意:Packagist 缓存元数据约 5–10 分钟,改完别立刻刷页面
funding 字段对 Composer 命令行有没有任何影响
没有。所有官方命令(composer install、composer show、composer outdated)都不读取、不提示、不校验 funding 字段。
-
composer show vendor/package输出里不会包含funding信息 - 第三方工具(如
composer-unused或 IDE 插件)也基本不解析它 - 唯一能“看到”的地方:打开 Packagist 页面,往下滑到 “Funding” 标题下
- 别指望靠它实现自动赞助提醒或安装时弹窗——那得自己写插件,而且 Composer 插件机制本身不暴露这个字段
type 值填错或自定义会怎样
Packagist 对 type 做白名单校验,填错只会导致该条目被静默忽略,不会报错也不会警告。
- 官方认可的
type值:github、patreon、open_collective、tidelift、community_bridge、ko_fi、custom -
custom是兜底选项,但 Packagist 会把它显示为 “Other”,且不加图标 - 填
paypal或alipay这类未注册的 type,整条对象直接丢弃,日志里也不留痕迹 - 如果想支持国内平台,只能用
custom+ 完整 URL,别幻想自动识别微信/支付宝收款码
真正起作用的只有 URL 是否可访问、是否 HTTPS、是否匹配该平台常规格式——Packagist 不验证链接有效性,但用户点不开就失去意义。











