Composer 查看包文档最可靠方式是检查 vendor/{vendor}/{name}/README.md 或 docs/ 目录,因 homepage 字段常为空、错误或非文档页,composer browse 仅打开 Packagist 页面而非实际文档。

composer show -i 查看已安装包的 homepage 字段
Composer 本身不提供直接跳转浏览器的功能,composer show 是唯一能读取包元信息(包括 homepage)的内置命令。加 -i 参数可只显示已安装的包,避免列出 require-dev 中未安装的依赖。
执行后每条输出包含 homepage 行,但该字段内容由包作者填写,可能为空、填错、指向旧地址,甚至不是文档页(比如指向 GitHub 主页或公司官网)。
-
composer show monolog/monolog -i输出中找homepage行 - 若值为
https://github.com/Seldaek/monolog,它不是文档页,需手动拼成https://seld.be/docs/monolog/或查 README - 部分包(如
laravel/framework)根本没填homepage,得靠经验或搜 Packagist 页面
composer browse 实际调用的是 packagist.org 页面,不是包自己的文档站
composer browse 命令本质是打开 https://packagist.org/packages/{vendor}/{name},它展示的是 Packagist 上的元数据聚合页,含下载数、依赖图、版本列表、source 和 homepage 字段——但它不验证链接有效性,也不区分“主页”和“文档页”。
例如:composer browse guzzlehttp/guzzle 打开的是 Packagist 页面,而 Guzzle 官方文档实际在 https://docs.guzzlephp.org/,这个地址既不在 homepage 字段里,也不在 Packagist 页面显眼位置。
- 该命令依赖系统默认浏览器,无参数控制跳转目标
- 无法跳过 Packagist 直达文档,除非包作者把
homepage显式设为文档地址 - 对私有包(非 Packagist 注册)会报错:
Could not find package xxx on packagist.org
真正可靠的文档入口:优先查 vendor/{vendor}/{name}/README.md 或 docs/ 目录
Composer 安装包后,源码就放在本地 vendor/ 下。比依赖远程字段更稳的方式,是直接翻源码里的说明文件。
绝大多数主流 PHP 包会在根目录放 README.md,顶部通常带文档链接;有些(如 Symfony 组件)还会附带 docs/ 子目录或指向 symfony.com/doc/ 的明确指引。
-
less vendor/phpunit/phpunit/README.md—— 第一行往往就是文档 URL -
ls -F vendor/doctrine/orm/docs/可看到是否自带离线文档结构 - 若 README 里写 “See https://www.doctrine-project.org/projects/orm.html”,那就比
homepage字段可信得多
自动化小技巧:用 shell 脚本提取 README 首行链接
如果你常要查文档,可以写个简单脚本绕过 Packagist 的不确定性。核心逻辑是:进 vendor 子目录 → 读 README → 提取第一行里的 URL。
#!/bin/bash PKG=$1 if [ -z "$PKG" ]; then echo "Usage: $0 vendor/name" exit 1 fi READMEREPO=$(grep -m1 -oE 'https?://[^[:space:]"]+' "vendor/$PKG/README.md" 2>/dev/null | head -n1) if [ -n "$READMEREPO" ]; then echo "Opening: $READMEREPO" xdg-open "$READMEREPO" 2>/dev/null || open "$READMEREPO" 2>/dev/null else echo "No URL found in README.md for $PKG" fi
保存为 doc,加执行权限,运行 ./doc phpunit/phpunit 就能直达 PHPUnit 官网文档页。注意:它不处理重定向、不校验状态码,但胜在不依赖外部服务和作者填写习惯。
这类脚本跑得再快,也改变不了一个事实:PHP 生态里没有统一文档注册机制。所谓“官方主页文档”,本质是人维护的字符串,信它不如信自己翻一眼 README。










