Composer 的 funding 字段是纯声明性元数据,仅用于声明作者接受赞助并提供标准化链接,不触发任何自动行为;需在 composer.json 中以合法 type(如 github、patreon)和完整 HTTPS url 的数组形式定义,Packagist 仅在包提交且元数据刷新后解析展示。

Composer 的 funding 字段是干啥的
它只是个纯声明字段,不触发任何自动行为,也不影响安装、更新或依赖解析。Composer 官方不会读取它来展示赞助入口,GitHub 也不会自动识别(除非你用 GitHub 的 FUNDING.yml)。它的作用只有一个:告诉使用者「这个包作者接受赞助」,且提供标准格式的链接和类型,方便工具(比如 Packagist 网站、IDE 插件)后续解析展示。
在 composer.json 里怎么写 funding
必须是数组,每个元素是一个对象,至少含 type 和 url 两个键。常见 type 值有:github、patreon、opencollective、tidelift、community_bridge(Linux 基金会)、ko_fi 等。
{
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/username"
},
{
"type": "patreon",
"url": "https://www.patreon.com/username"
}
]
}注意:url 必须是完整可访问的 HTTPS 链接;type 值要小写,且必须是 Composer 文档列出的合法值,否则 Packagist 会忽略整条记录;多个赞助渠道可以并列,顺序无关。
为什么加了 funding 却没在 Packagist 上显示
Packagist 只在包被成功提交并解析后才读取该字段,但前提是:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 包已通过
packagist.org正确提交(不是仅本地composer.json修改) - 提交后 Packagist 重新抓取了最新
composer.json(通常需手动触发“Update”或等 Webhook 推送) -
funding结构合法,没有语法错误或非法type - 你的 Packagist 账户对该项目有维护权限
如果已满足以上,仍不显示,可检查 Packagist 页面右下角「Package details」区域 —— 它只在那里展示,不在主信息栏。
和 GitHub 的 FUNDING.yml 冲突吗
不冲突,但用途不同:
-
FUNDING.yml是 GitHub 原生支持的文件,放在仓库根目录,用于在 GitHub UI(如 README 顶部、赞助按钮)自动展示赞助入口 -
funding字段是 Composer 生态的元数据,主要服务 Packagist、IDE(如 PHPStorm 的包详情面板)等第三方工具
两者可以共存,推荐都配:GitHub 用户看到的是 GitHub 原生按钮,PHP 开发者通过 Packagist 或 composer show 查包时也能看到赞助信息。
实际项目中,最容易被忽略的是提交后没让 Packagist 刷新元数据 —— 改完 composer.json 不等于 Packagist 立即生效,得让它重新 fetch 一次。

















