composer show --tree是查看vendor/中实际安装包(含传递依赖)的唯一可靠命令,读取vendor/composer/installed.json和composer.lock快照,按缩进展示完整层级结构,需在项目根目录运行且vendor/非空。

直接运行 composer show 就能列出所有已安装的顶层包,但“所有包”不等于“全部依赖”——它默认不展开 guzzlehttp/psr7、psr/http-message 这类传递依赖,必须加参数才能看到真实 vendor/ 内容。
怎么查 vendor/ 里实际装了哪些包(含传递依赖)
用 composer show --tree。它读取 vendor/composer/installed.json,按缩进层级展示从 root project 开始的所有已安装包,包括被 laravel/framework 或 symfony/console 拉进来的底层包。
- 输出太长?直接管道过滤:
composer show --tree | grep -A 1 -B 1 "psr/log" - 只关心运行时依赖(不含
require-dev)?加--no-dev:composer show --tree --no-dev - 如果
vendor/为空(比如刚 clone 项目),命令会报错或返回空——先composer install再查 -
--tree不校验包是否真能加载,只反映当前锁文件与 vendor 的快照状态
怎么确认某个包是不是真被装进 vendor/ 了
别只看 composer show 默认输出,它可能漏掉间接依赖。可靠方式是:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查包是否存在:
ls vendor/monolog或composer show --installed monolog/monolog(--installed强制只显示已落地的) - 查它被谁拉进来:
composer why monolog/monolog;想看完整链路就加--tree - 注意大小写和斜杠:
monolog/monolog≠Monolog/monolog,拼错会返回Could not find package - 如果
composer why返回No dependencies exist,可能是它只在require-dev里,且你上次用了--no-dev安装
怎么查一个包自己依赖了哪些包(已安装 or 未安装)
分两种场景:
- 包已安装:
composer show monolog/monolog—— 输出里的requires字段就是它声明的直接依赖(如php: ^7.2.5 || ^8.0、psr/log: ^1.1) - 包未安装但想预览:
composer show --remote monolog/monolog—— 查 Packagist 上注册的元信息,不保证本地可装通 - 要看它的完整依赖树(含子依赖):
composer show --tree monolog/monolog(已安装)或composer show --remote --tree monolog/monolog(未安装) -
composer show不联网查远程,--remote才会请求 Packagist API
导出为纯文本或结构化数据供后续处理
默认 composer show 是人眼友好格式,但脚本处理建议显式指定格式:
- 导出为无色纯文本(方便
grep/awk):composer show --installed --no-ansi - 只取包名列表:
composer show --installed --no-ansi | awk '{print $1}' - 需要 JSON 结构(如 CI 中解析):
composer show --format=json—— 注意:它返回的是每个包的元数据对象,不是扁平数组 - 别用
composer outdated导清单,它只显示有更新的包,且过滤require-dev,不是安装快照
真正容易被忽略的是:Composer 的依赖解析结果取决于当前 composer.lock 和 vendor/ 的一致性。如果手动删过 vendor/ 但没重装,或锁文件被编辑过,composer show --tree 显示的可能和磁盘实际内容不一致。

















