composer show 默认只显示已安装包的名称和版本号;加包名可查完整元数据,含描述、许可证、依赖等;-t 展开依赖树,* 标示显式依赖;--format=json 适合自动化解析。

composer show 是查包信息最直接的命令,但它默认只列名称和版本,想看真正有用的细节得加参数——不加就等于白跑。
show 后不跟参数时到底显示什么
只执行 composer show,它列出当前项目所有已安装包的名称和版本号,类似一个极简清单。没有描述、没有依赖树、看不到源码地址或许可证,对排查兼容性或理解包用途基本没帮助。
- 输出是纯文本表格,列宽自动截断,长包名或长描述会被砍掉
- 不区分“根依赖”和“传递依赖”,混在一起展示,容易漏看关键包
- 不会提示该包是否被
require-dev引入,开发依赖和生产依赖无法直观区分
用 show 查单个包的完整元数据
要真正看清一个包,必须指定包名:composer show vendor/package。这时会输出包括描述、关键词、类型、许可证、源码地址、autoload 配置、依赖列表(require)、开发依赖(require-dev)等全部 composer.json 字段。
- 如果包未安装,命令仍能运行(从 packagist.org 拉取最新稳定版元数据),但会提示
Package not installed, getting info from packagist.org - 加
-s(--source)可强制从本地vendor/读取已安装版本的实际内容,避免网络波动或 packagist 延迟导致的信息偏差 - 注意大小写:包名必须全小写,比如
monolog/monolog,写成Monolog/Monolog会报错Could not find package Monolog/Monolog
用 show -t 看依赖树时的三个关键点
composer show -t vendor/package 能展开该包的完整依赖树,但实际使用中容易误解输出结构。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 缩进不是按层级深度严格对齐的,而是按“首次出现顺序”排布,同一级依赖可能因加载顺序不同而缩进不一致
- 带星号(
*)的条目表示该包已被当前项目显式 require,不是传递引入;没星号的是间接依赖 - 若某个依赖被多个路径引入,
-t默认只显示一条路径,加--all才会展开所有路径(但输出会急剧变长,慎用)
show 结合 JSON 输出做自动化处理
需要脚本解析时,别用 composer show vendor/package | grep 这种脆弱方式,改用 --format=json:
composer show monolog/monolog --format=json
输出是标准 JSON,字段名与 composer.json 完全一致,比如 description、require、autoload 都原样保留。唯一要注意的是:JSON 中的 version 字段值是安装版本(如 "2.10.0"),而 dist 或 source 里的 reference 是 commit hash,别把这两个搞混了。
依赖关系复杂时,show 的输出容易一眼扫漏——尤其是嵌套深、同名包多版本共存的情况。这时候与其反复敲命令,不如先用 composer show --tree 快速定位路径,再针对具体节点补查 show -s。










