composer show 默认不显示 homepage 字段,仅当包的 composer.json 中显式定义时才出现;可用 composer show -s 查看完整元数据确认是否存在,其数据源自本地 installed.json,可能滞后于 packagist 最新快照。

composer show 命令查包信息时 homepage 字段在哪
直接运行 composer show vendor/package-name,输出里就有 homepage 字段,但默认只显示基础元数据(name、version、type 等),homepage 不一定出现——它只在包的 composer.json 中显式定义了才展示。
常见错误是以为所有包都有 homepage,其实很多开源包没填这个字段,结果执行后找不到,误以为命令不支持。
- 确认包是否真有 homepage:用
composer show -s vendor/package-name(-s表示显示完整 composer.json 内容) - 如果输出里仍无
homepage,说明该包作者没配置,不是你操作问题 -
composer show不会自动抓取 GitHub/GitLab 仓库主页,它只读取本地 lock 文件或 packagist 元数据中已有的字段
packagist.org 上怎么快速定位官方文档链接
Packagist 页面右上角的 Source 或 Homepage 按钮,就是最可靠的入口。但要注意:这两个按钮的来源不同,行为也不同。
-
Source指向composer.json里的source字段(通常是 Git 仓库地址),适合看源码 -
Homepage对应composer.json的homepage字段,多数包用它放官网或文档页,但部分作者会填成个人博客甚至空着 - 如果两个都缺失,点页面下方的
View source on GitHub(若存在)往往更靠谱,因为 Packagist 会自动从 GitHub 仓库提取README.md里的链接
为什么 composer show 显示的 homepage 和 packagist 页面不一致
根本原因是数据来源不同:composer show 读的是当前项目 vendor/composer/installed.json(即已安装包的元数据),而 packagist.org 显示的是最新提交到 Packagist 的 composer.json 快照。
- 你本地装的是旧版本包,作者后来才补了
homepage,composer show就看不到 - 包作者改了
composer.json但没发新 tag,Packagist 不会自动更新,导致页面和本地都不准 - 某些包用
replace或provide机制伪装,composer show可能显示被替换包的信息,而非实际加载的包
想自动化获取一堆包的 homepage 怎么办
别写脚本去爬 Packagist,直接用 Composer 自带能力更稳。
- 用
composer show --format=json输出结构化数据,再用jq提取:composer show --format=json | jq -r '.packages[] | select(.homepage) | "\(.name) \(.homepage)"' - 注意:这个 JSON 输出包含所有已安装包(含 require-dev),如只需生产依赖,加
--no-dev - 如果某包
homepage是相对路径(比如/docs),那是作者填错了,不能直接访问,得结合包的source或homepage基础域名拼接
真正容易被忽略的是:homepage 字段不是标准必填项,它的存在与否、格式是否合法,完全取决于包作者。别把它当权威文档入口,优先看 README 或 GitHub Wiki 更实际。










