composer browse 只能打开声明了 support.docs 或 homepage 字段的包的文档页,否则 fallback 到 source(如 github);它不识别 readme.md 或 docs/ 目录,且不验证 url 有效性。

composer browse 能打开哪些包的文档?
只有包在 composer.json 里声明了 homepage 或 support.docs 字段,composer browse 才能跳转成功。很多包只填了 source(比如 GitHub 地址),这时命令会 fallback 到源码页,而不是文档页。
常见错误现象:composer browse monolog/monolog 打开的是 GitHub 仓库首页,不是 官方文档站——因为它的 composer.json 没配 support.docs。
- 检查方式:运行
composer show monolog/monolog | grep -E "(homepage|docs)" - 手动补救:如果知道文档地址,可直接用
composer browse monolog/monolog --homepage https://www.php.cn/link/8b1d1819083fd8cae921d69e20715016 - 注意:该命令不识别
readme.md或docs/目录,只认 Composer 元数据字段
为什么 composer browse 有时打不开浏览器?
根本原因是系统找不到默认浏览器命令。Linux/macOS 依赖 $BROWSER 环境变量或 xdg-open/open 命令;Windows 依赖 start,但某些精简版终端(如 Git Bash)可能不兼容。
- Linux 上可临时指定:
BROWSER=firefox composer browse guzzlehttp/guzzle - macOS 若报
Unable to open browser,试试export BROWSER=open再运行 - Windows 用户若用 WSL,
composer browse默认尝试调用 WSL 的xdg-open,但实际没装图形环境——此时需加--no-interaction并手动复制 URL
composer browse 和 composer home 有什么区别?
composer browse 优先找文档链接(support.docs > homepage > source),而 composer home 固定打开 homepage 字段,哪怕它只是作者个人博客。
- 例如:
composer browse laravel/framework会打开 Laravel 文档(它配置了support.docs) - 但
composer home laravel/framework会打开 Laravel 官网首页(homepage字段值) - 如果一个包两个字段都没填,
composer browse会退到source(通常是 GitHub),composer home则直接报错
想批量查多个包的文档链接?别用 browse
composer browse 是交互式命令,不支持一次传入多个包名,强行写 composer browse foo/bar baz/qux 会报错“Too many arguments”。真要批量获取,得用 composer show 提取元数据再过滤:
composer show --all | awk '/^name : / { pkg=$3 } /^support\.docs : / || /^homepage : / { print pkg, $1, $3 }'
这个命令输出每行是 包名 字段名 链接,比反复敲 browse 更适合排查缺失文档链接的包。
真正容易被忽略的是:Composer 不会验证这些 URL 是否可访问,也不缓存响应结果。每次执行都是实时读取 composer.lock 或远程包信息,网络慢或包源不稳定时,命令可能卡住几秒才报错。











