composer fund 命令仅读取 composer.json 中的 funding 字段,不解析 gitHub 的 .github/FUNDING.yml;后者仅用于 GitHub 网页界面显示 Sponsor 按钮,二者无自动关联,需开发者手动同步。

Composer 的 fund 命令本身并不直接读取或解析 GitHub 仓库里的 .github/FUNDING.yml 文件。
Composer fund 命令依赖的是 composer.json 中的 funding 字段
它只识别当前项目(或所查包)的 composer.json 里是否定义了 "funding" 键。这个字段是 Packagist 官方支持的字段,格式如下:
- 可以是单个对象,如
{"type": "github", "url": "https://github.com/sponsors/username"} - 也可以是数组,列出多个资助渠道
- Composer 会原样展示这些信息,不验证 URL 是否有效,也不去 GitHub 抓取
FUNDING.yml
GitHub 的 FUNDING.yml 是独立机制,对 Composer 无直接影响
.github/FUNDING.yml 是 GitHub 自己用于在网页界面(如仓库主页、依赖图、安全告警页)自动显示“Sponsor”按钮的配置文件。它的作用范围仅限于 GitHub 平台,和 Composer CLI 完全无关。
即使一个包在 GitHub 上配置了 FUNDING.yml,但它的 composer.json 没写 funding 字段,运行 composer fund vendor/package 就会提示 “No funding information available”。
两者能“联动”只是靠开发者手动保持一致
所谓“联动”,其实是维护者主动把相同资助链接同时填到两个地方:
- 在
composer.json的funding字段中填写 GitHub Sponsors 链接(或其他平台) - 在 GitHub 仓库根目录下放
.github/FUNDING.yml,内容可能包含github: username或完整 URL
这样用户在命令行用 composer fund 和在 GitHub 页面上看到的资助入口才一致。但这是人为同步,不是自动打通。
基本上就这些 —— Composer 不拉取、不解析、不关心 GitHub 的 FUNDING.yml。