默认的 composer show 只显示顶层包,要查看全部已安装包(含间接依赖)须加参数;查完整依赖树用 composer show --tree,它从 vendor/composer/installed.json 读取真实安装快照并逐级展开。

默认的 composer show 只显示你手动写在 composer.json 里的顶层包,不是全部已安装包 —— 想看到所有(含 psr/log、symfony/polyfill 这类间接依赖),必须加参数。
查看完整依赖树(含所有嵌套包)
运行 composer show --tree,它会从 vendor/composer/installed.json 读取真实安装快照,以缩进形式展示每一层依赖关系。比如 topthink/think-orm 引入了 psr/simple-cache,后者又依赖 psr/cache,这些都会逐级展开。
- 输出太长时可管道过滤:
composer show --tree | grep "psr/" - 终端宽度不够导致换行错乱?加
| less -S或重定向到文件:composer show --tree > deps.txt - 如果输出为空或报错,先确认是否在项目根目录(有
composer.json和vendor/),且已执行过composer install
导出简洁的包名+版本列表(适合脚本处理)
用 composer show --installed --no-ansi,它保证只输出已实际安装的包(跳过 composer.lock 里存在但未 install 的),且无颜色控制符,方便后续 awk 或 cut 处理。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 只要包名(不含版本):
composer show --installed --no-ansi | awk '{print $1}' - 想排除
require-dev包?加--no-dev参数,但注意:这要求你上次install时也用了--no-dev,否则结果不一致 - 别用
composer.lock手动解析——格式不稳定,show命令才是 Composer 官方支持的稳定接口
查某个具体包是否真装上了
直接运行 composer show vendor/name(如 composer show monolog/monolog),它会返回明确结果:Package not installed 或详细元数据。关键点是包名必须全小写、带斜杠、拼写完全正确。
- 输
composer show monolog→ 报错,缺vendor/前缀 - 输
Composer/monolog→ 报错,大小写敏感 - 包只在
require-dev里,但当前没装 dev 包?命令也会返回not installed - 想看 autoload 映射或 require 列表?加
-s:composer show -s monolog/monolog
区分本地项目 vs 全局安装的包
composer show 永远只查当前项目,跟全局无关。如果你装了 laravel/installer 但 composer show laravel/installer 找不到,不是命令错了,是该包装在全局。
- 查全局包:用
composer global show(如composer global show laravel/installer) - 全局 bin 目录没进
$PATH?先跑composer config --global home看路径,再检查[home]/vendor/bin是否在环境变量中 - 误用
composer show查全局包,是新手最常卡住的地方
真正容易被忽略的是:所有 composer show 命令都强依赖 vendor/ 目录存在且完整;它不回退到 composer.lock,也不联网,删了 vendor 就等于没装过 —— 这个前提比任何参数都重要。

















