composer show 可查看已安装包的版本和描述,默认只显示顶层包,加 -a 参数递归显示全部依赖;支持模糊搜索和通配符;composer tree 则以树形结构展示依赖关系,需 composer 2.1+。

直接用 composer show 就能看到所有已安装的包,包括版本、描述和依赖关系。
查看全部已安装包(含版本和简要信息)
最常用也最直观的方式就是运行:composer show
它默认列出 vendor/ 下所有包,每行一个,格式是:vendor/name version description。比如:monolog/monolog 2.10.0 Sends your logs to files, sockets, inboxes, databases and various web services
- 不加参数时只显示顶层包(
require和require-dev中声明的) - 加
-a参数(即composer show -a)会递归显示所有依赖,包括子依赖,但输出很长,适合排查冲突时用 - 如果项目还没执行过
composer install或composer update,vendor/为空,命令会报错:Could not find package
按名称模糊搜索某个包
想确认某包是否装了、装的是哪个版本?用 composer show 加关键词:
composer show monologcomposer show "doctrine/*"
- 支持通配符
*,但必须用引号包裹,否则 shell 会提前展开 - 匹配不到时不会报错,只是没输出——这是最容易误判“没装上”的地方,建议加个
|| echo "not found"做兜底 - 注意大小写:包名是小写的,
Monolog这种写法查不到
只看依赖树结构(不是列表)
需要理解包之间怎么嵌套依赖?用 composer tree:
composer tree monolog/monolog —— 查看 monolog 及其所有子依赖composer tree --who-requires monolog/monolog —— 查谁依赖了 monolog
-
composer tree是 Composer 2.1+ 内置命令,旧版本需装插件hirak/prestissimo或升级 Composer - 输出是缩进式树形,比
show -a更易读,但不显示版本号(除非加-v) - 如果提示
Command "tree" is not defined,说明 Composer 版本太低,优先升级:composer self-update
真正容易被忽略的是:Composer 的“已安装”只取决于 vendor/ 目录是否存在对应文件夹,和 composer.json 是否声明无关。删掉 vendor/ 后 show 就失效;而 composer.json 里写了但没 install 的包,show 根本看不到。










