直接运行 composer show 只列出顶层依赖,不展开子依赖、不显示 autoload 或远程版本;查包是否安装需用 composer show vendor/package,加 -s 查 autoload/scripts,--tree 查真实依赖树,--all 查远程所有版本。

直接运行 composer show 只能列出当前项目已安装的顶层包(即 composer.json 中 require 和 require-dev 里显式声明的),不展开依赖树、不显示 autoload 配置、也不查远程版本——想看到真实安装结构或调试类加载,必须加参数。
查某个包装没装、装的是哪个版本
输 composer show vendor/package 是唯一能确认该包是否真在 vendor/ 里的方法。它读的是 vendor/composer/installed.json,不是 composer.lock 的声明。
- 包名必须写全,
monolog或Monolog/Monolog都会报[InvalidArgumentException] Package not installed - 如果只在
require-dev里,又执行过composer install --no-dev,那它就不会出现在结果中 - 输出里
versions行显示的是实际安装版本,不是最新版;想看有没有可升级版本,得用composer outdated或composer show --all
查 autoload 映射和 scripts 钩子
类找不到、自定义命令不执行,八成是 autoload 或 scripts 配置没生效。composer show -s vendor/package 能直接打出这两块关键字段。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer show -s monolog/monolog会显示"Monolog": "src/",说明Monolog\Logger对应vendor/monolog/monolog/src/Logger.php - 同时列出
scripts字段注册的钩子,比如post-install-cmd是否包含phpunit - 这个
-s(即--show-config)在 Composer 2.2+ 才稳定支持;旧版本会报unrecognized option,别硬试
查依赖树:为什么 psr/log 装了两个版本
composer show --tree vendor/package 是还原 Composer 实际解析出的安装路径的唯一方式,不是“展示你写了什么”,而是“它到底装成了什么样”。
-
composer show --tree laravel/framework输出类似:laravel/framework v10.48.12<br>└── symfony/console v6.4.7<br> └── psr/log 3.0.0
- 它只反映
composer.lock里已确定的路径;如果某包只在require-dev且用了--no-dev,就不会出现 - 管道过滤很实用:
composer show --tree | grep guzzle,但注意保留前导空格,否则缩进结构丢失 -
--tree不支持通配符,composer show --tree "laravel/*"会直接报错
查远程所有可用版本(含未安装的)
composer show --all vendor/package 绕过本地缓存,直连 Packagist API,返回该包所有可发布的版本摘要。
- 必须用双横线
--all,-a是无效别名,会被忽略且不提示 - 结果只含包名和简短描述,不含版本兼容性或 PHP 约束;要确认
v8.0是否支持 PHP 8.3,仍需指定版本号再查:composer show guzzlehttp/guzzle 8.0.0 - 查私有包时,
--repository后的 URL 必须是合法的packages.json地址,填 Git URL 会报Could not parse version constraint
最容易被忽略的一点:所有 composer show 命令都强依赖 composer.lock 完整性和 vendor/ 目录存在。手动删过 vendor/ 却没重装,或者 lock 文件损坏,show 就会输出错误或不完整信息——它不扫描源码,只读已安装状态。










