composer fund 命令并不存在,它是社区误传;composer 自 v2.1 起支持 composer.json 中的 funding 字段,但需手动用 composer show --all 查看,且捐赠决策须人工验证链接有效性与项目维护状态。

composer fund 命令本身并不存在 —— Composer 官方从未实现过这个命令,也没有内置的依赖捐赠分析能力。
为什么 composer fund 会让人误以为存在
很多人在运行 composer fund 后看到类似 “Command ‘fund’ is not defined” 的错误,或偶然在某些定制插件、第三方脚本里见过该命令,误以为它是 Composer 原生功能。实际上:
- Composer 核心(v2.0–v2.7)所有官方命令列表中无
fund - PHP 社区确有零星插件(如
composer-fund第三方包)尝试解析composer.lock中的funding字段并汇总推荐,但它们不被 Composer 默认集成 -
composer show --tree或composer depends可查依赖关系,但不关联资金信息
真正能读取“可捐赠库”的唯一依据:funding 字段
自 Composer v2.1 起,composer.json 支持声明 funding 字段,例如:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
{
"name": "monolog/monolog",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/Seldaek"
}
]
}
该字段只存在于包自身的 composer.json 中,不会自动传播到依赖树上层。关键点:
-
composer install或update不会验证、抓取或缓存这些链接 -
composer show monolog/monolog默认不显示funding;需加--all参数才可能输出(取决于是否已加载元数据) - 只有当包发布时明确填写了
funding,且你本地执行composer show --all <pkg></pkg>能看到它,才算“有据可捐”
手动识别“最值得捐赠的底层库”的实操路径
所谓“底层”,指被最多其他依赖间接引用、自身无非开发依赖、维护活跃度高、且公开申明了 funding 的包。你可以这样筛:
- 用
composer depends --tree <pkg></pkg>看谁在依赖它(反向依赖深度越深,越可能是底层) - 用
composer show --all <pkg></pkg>检查输出中是否有funding字段(注意:不是所有包都填) - 结合 GitHub star 数、最近 commit 时间、issue 响应速度等人工判断“是否值得”——Composer 不提供这些指标
- 避免误捐:像
psr/log这类接口规范包通常没有 funding 字段,也不接受直接捐赠;而symfony/polyfill等虽被广泛依赖,但其 funding 信息往往指向 Symfony 官方集资页,而非单个 polyfill 包
真正的捐赠决策依赖人工交叉验证,不是靠一条命令就能跑出来的结论。最容易被忽略的是:funding 字段可能指向个人主页、Open Collective 项目页或 GitHub Sponsors,但链接是否仍有效、是否仍在接受捐赠,必须手动点开确认。










