composer show 列出当前项目 vendor 下所有已安装包及其版本号,按字母序排列;加 -i 仅显示 composer.json 中直接声明的包;加 --tree 展开指定包依赖树;若提示命令未定义,说明 Composer 版本过旧。

composer show 查看当前项目所有已安装包
直接运行 composer show 就能列出当前项目 vendor/ 下全部已安装的包及其版本号,按包名字母序排列。这是最常用、最轻量的方式,不依赖网络,只读取本地 composer.lock 和已安装文件。
- 加
-i参数(即composer show -i)可只显示「直接声明在composer.json中」的包,排除递归依赖 - 加
--tree(如composer show --tree vendor/package-name)能展开某个包的完整依赖树 - 如果提示
Command "show" is not defined,说明 Composer 版本太老(composer list + 手动筛选
composer list --help 看清可用子命令和别名
composer list 本身不输出包列表,但它会列出所有内置命令——其中 show、outdated、depends 都和依赖查看强相关。注意:Composer 2.x 把 show 设为默认命令,所以 composer show 可简写为 composer(但不推荐,易混淆)。
-
composer outdated只显示有新版本的包,适合检查是否该更新 -
composer depends vendor/package能反查哪个包依赖了指定包(对排查冲突有用) - 别名如
composer show -s是无效的,-s并非show的合法选项,容易输错
查看 lock 文件比 vendor 更可靠
有时候 vendor/ 缺文件或没执行过 composer install,composer show 可能漏包或报错。此时应优先信任 composer.lock——它记录了精确安装状态。可用 jq 或文本工具解析:
jq -r '.packages[] | "\(.name) \(.version)"' composer.lock | sort
- 该命令要求系统装有
jq,Windows 用户可用composer show替代,不必强求解析 JSON -
composer.lock中的packages-dev字段包含开发依赖,composer show --dev才能一并列出 - 若
composer.lock不存在,说明项目从未成功安装过依赖,composer show必然为空
常见错误:为什么 composer show 没反应或报错?
多数问题出在工作目录或权限上,不是命令本身的问题。
真正要注意的是:包列表是否包含 dev 依赖、是否反映真实安装状态、以及你到底想解决什么问题——是升级检查?还是排查冲突?还是审计安全?选对命令比记住所有参数更重要。










