composer show 默认仅显示已安装包的名称和版本,需加参数获取完整信息:-s 查简介作者等、-i 限定已安装、-t 展开依赖树、-a 查远程包所有版本摘要,path包需手动验证本地状态。

composer show 能查到哪些包信息
直接运行 composer show 会列出当前项目所有已安装包的名称和版本,但不显示描述、作者或依赖关系。真正有用的细节得靠加参数——比如你想确认 monolog/monolog 是不是用了 v2.9.0、有没有声明 PHP 8.1 兼容性、它又依赖了哪些包,就得指定包名并加详细选项。
常见错误是只输 composer show monolog/monolog,结果只看到一行版本号,以为没查全。其实默认行为就是“简略模式”,必须显式告诉 Composer:我要完整元数据。
- 加
-s(--summary)看简介、作者、许可证等基础字段 - 加
-i(--installed)只显示已安装的包(避免匹配到 packagist 上未安装的同名包) - 加
-t(--tree)展开依赖树,看清它拉了哪些子依赖、有没有冲突版本 - 不加任何参数时,
composer show vendor/package实际只输出一行:vendor/package 2.9.0,非常容易误判为“查不到详情”
查看远程包(未安装)的最新版和兼容性
想在装之前先确认 symfony/console 的 latest 版本是否支持 PHP 8.3,或者它的 require 里有没有硬绑 php: ^8.0,就不能用 --installed,得靠 composer show -a(--all)。
这个命令会绕过本地 vendor/,直接查 Packagist API,返回的是该包所有可用版本的摘要,包括最低 PHP 版本、是否弃用、是否有稳定版标签。但要注意:-a 不会显示某个具体版本的完整 composer.json 内容,只给概览;真要看某版本的完整定义,得配合 composer show vendor/package version --no-dev 加上具体版本号。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer show symfony/console -a:列出所有版本号 + 发布时间 + 是否稳定 -
composer show symfony/console 6.4.0 -s:查 v6.4.0 的描述、作者、关键词、PHP 约束 - 如果包名拼错(比如写成
symfony/consoole),composer show默认静默失败,不报错也不提示——必须加-v才能看到 “Package not found”
show 命令查不到本地修改过的包怎么办
你用 path 类型仓库替换了 guzzlehttp/guzzle,指向本地 fork 目录,这时 composer show guzzlehttp/guzzle 仍会显示 Packagist 上的版本号,而不是你本地 composer.json 里写的 "version": "dev-main" 或实际提交哈希。
这是因为 composer show 默认读取的是 vendor/composer/installed.json 里的元数据,而 path 包的信息可能被简化或覆盖。要确认真实状态,得手动检查:cat vendor/guzzlehttp/guzzle/composer.json | grep -E "(version|source)",或者更可靠地用 composer show guzzlehttp/guzzle --tree 看依赖是否真的从本地路径加载(输出里会带 path 字样)。
- path 包的
version字段在installed.json中常被设为dev-main,和你本地composer.json里写的不一致 - 如果本地包没提交 git tag,
composer show查出的版本号可能为空或显示dev-main,不代表安装失败 - 执行
composer update guzzlehttp/guzzle后再show,才能刷新installed.json中的元数据
为什么 show 显示的 require 和实际 autoload 不一致
composer show -s 输出的 require 是包作者声明的依赖,但实际加载时 Composer 可能做了版本替换(如通过 replace 或 provide)、或启用了 minimum-stability 调整,导致最终解析出的依赖图和 show 结果不同。更隐蔽的是 autoload 部分:有些包把 PSR-4 映射写在 autoload-dev 里,show 默认不显示 dev 区块,你就看不到测试类的自动加载规则。
- 加
--no-dev参数后,composer show vendor/package -s才会过滤掉autoload-dev,否则可能混入开发专用配置 -
require-dev永远不会出现在show的输出中,哪怕你本地装了它们——这是设计使然,不是 bug - 如果包用了
classmap且路径含通配符(如"src/*"),show只显示原始配置,不展开实际扫描到的文件列表
真正要验证 autoload 是否生效,别只信 show,直接 composer dump-autoload -o 后用 php -r "var_dump(class_exists('Vendor\Class'));" 测试更实在。

















