composer show vendor/package-name 可查已安装包完整元信息,含版本、描述、作者、许可证、homepage、require、autoload、dist 地址及安装路径;需写全 vendor 名,否则报错;未安装时明确提示 not installed。

直接查已安装包的完整元信息
用 composer show vendor/package-name 就能拿到当前项目里这个包的全部公开信息:版本、描述、作者、许可证、homepage、require 依赖列表、autoload 配置,甚至 dist 源地址和安装路径。它不是只显示「名字+版本」的简表——那是不加参数时的默认行为,容易误以为信息全了。
- 必须写全 vendor 名,
composer show monolog/monolog✅,composer show monolog❌(报错 Package not found) - 如果包没装上,命令会明确提示
not installed,不会静默失败 - homepage 字段通常就是官方文档链接,比如
https://github.com/Seldaek/monolog;为空时可看 source 字段,再手动拼 README 或 GitHub Pages 地址
查远程最新版或所有可用版本
想评估是否该升级、或确认某个旧版是否还被支持,不能只看本地已装的版本。这时候得绕过本地缓存,直连 Packagist。
- 加
--remote查远程最新信息:composer show --remote laravel/framework,输出的是 Packagist 上标记为 latest 的版本详情 - 加
-a或--all列出所有发布过的版本:composer show -a guzzlehttp/guzzle,适合找 LTS 版本或避开有 bug 的中间版 -
--remote和-a不能同时用;--remote默认只返回 latest,不是全部
看依赖树或反向追溯引用关系
光知道 A 依赖 B 不够,常要搞清「为什么 B 被装进来」「谁在拖着旧版 C 不升级」——这时靠树状结构比翻 composer.lock 直观得多。
-
composer show --tree vendor/package-name显示该包的向下依赖链,缩进层级即依赖深度,例如laravel/framework → symfony/console → psr/log - 但注意:它只反映当前已解析并安装的路径,dev-only 依赖或未启用的条件 require 不会出现
- 查「谁用了这个包」用
composer depends --tree vendor/package-name,比show --tree更适合排查冲突源头
自动化提取字段或调试 autoload 失败
当你要批量检查许可证、快速验证 PSR-4 映射、或 debug 类找不到错误时,靠肉眼扫 terminal 输出效率低且易漏行。
- 用
--format=json+jq精准取值:composer show --format=json monolog/monolog | jq -r '.autoload["psr-4"]["Monolog\\"]'输出src/,确认自动加载路径是否正确 -
composer show -s vendor/package-name(--show-config)会把 autoload、scripts、autoload-dev 展开成可读格式,对调试命令执行失败或类加载异常特别有用,但仅 Composer 2.2+ 稳定支持 - 没装
jq时别硬套正则 grep,composer show --format=json输出是多行 JSON,grep 容易断行;不如先重定向到文件再处理
真正卡住人的往往不是命令本身,而是默认行为和参数边界:比如 show 不加包名只列顶层依赖、--tree 不等于全量依赖、--remote 不返回历史版本。看清每个开关实际影响哪一层数据,比记住所有参数更重要。










