composer show 默认只显示顶层依赖,因其仅读取 composer.lock 中的 packages 字段,跳过所有间接依赖;查完整依赖树必须用 --tree,它递归解析 installed.json 中的嵌套 requires 并以缩进展示层级。

直接用 composer show,别试 composer list——后者只列命令,不查包。
为什么 composer show 输出比 ls vendor/ 少?
它默认只读 composer.lock 中的顶层 packages 字段,跳过所有间接依赖(比如 symfony/console 拉进来的 psr/log)。你手动写在 require 或 require-dev 里的才会出现在默认输出里。
- 刚克隆项目、
composer.lock存在但没运行过composer install,composer show仍会输出锁文件记录的包——但它反映的是“计划安装”,不是磁盘上已解压的包 - 执行过
composer install --no-dev,require-dev里的包(如phpunit/phpunit)不会出现,哪怕它们还在composer.json里 - 确认是否真装了:看
ls vendor/有没有对应目录,或composer show输出末尾是否带(installed)标记(Composer 2.5+ 默认启用)
查完整依赖树:必须加 --tree
composer show --tree 是唯一能还原真实安装结构、排查版本冲突的方式。它递归读取 vendor/composer/installed.json 中记录的嵌套 requires,输出带缩进和箭头的层级关系。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 终端宽度不够时长包名会被截断,建议加
| less -S或重定向到文件:composer show --tree > deps.tree - 想快速定位某个包,直接
composer show --tree | grep "guzzlehttp" - 该命令不扫描
vendor/目录,完全依赖composer.lock解析结果;锁文件损坏会导致输出与磁盘不一致 - 如果某包在
require-dev里且当前用--no-dev安装过,它不会出现在--tree结果中
导出干净列表给脚本或 CI 用
别手写脚本去解析 composer.lock——格式在 Composer 2.x / 3.x 间不稳定;用 composer show 自带的输出更可靠。
- 一行一个
vendor/name version的纯文本格式:composer show --installed --no-ansi - 等价短命令:
composer show -i --no-ansi(-i=--installed) - 只要包名不要版本:
composer show --installed --no-ansi | awk '{print $1}' - 想 JSON 格式?
--format=json可用,但嵌套结构解析成本高,日常推荐--format=plain
查全局包别用 composer show,换 composer global show
composer show 完全无视全局配置,哪怕你在 /tmp 下执行,它也只扫当前项目的 vendor/。全局包得用专用命令。
- 查是否真装了
laravel/installer:composer global show laravel/installer,不是composer show laravel/installer - 只看自己手动
global require的包(排除自动拉进来的依赖):composer global show --direct - 输出太长?加
--name-only只留包名:composer global show --name-only - 全局包路径通常为
~/.composer/vendor/(Linux/macOS)或%APPDATA%\Composer\vendor\(Windows),但不要直接翻文件夹——global show更可靠
最容易被忽略的点是:composer show 的行为高度依赖 composer.lock 和 vendor/composer/installed.json 的完整性。删过 vendor/ 但没重装,或者锁文件损坏,都会让输出失真。真要验货,ls vendor/ 永远是最硬的证据。










