Composer的funding字段如何帮助开源项目获得支持? (composer.json配置)

12次阅读

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

Composer的funding字段如何帮助开源项目获得支持? (composer.json配置)

composer.json 里的 funding 字段到底起什么作用?

它本身不自动收钱、不触发打赏、也不影响依赖安装流程——只是一个「声明式元数据」。composer 官方工具(如 composer fund)和 Packagist 网站会读取这个字段,向用户展示项目接受资助的渠道,本质是降低支持门槛,把“想支持但找不到入口”的人引过去。

怎么写才被 composer fund 正确识别?

必须用标准格式,且只支持特定平台类型。Packagist 文档明确列出受支持的 type 值(如 githubpatreontidelift),拼错或自定义类型会被忽略。

  • 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 指向的是组织或项目主账户,不是某个开发者的个人主页——除非你明确希望资助流向个人。

text=ZqhQzanResources