composer show不加参数仅列出已安装的顶层包名与版本号,不显示依赖树、autoload、许可证等详情;查完整元数据须指定全小写vendor/package名,加-s看autoload/scripts,--tree查依赖路径,--all查远程所有版本。

composer show 不加参数只显示已安装包列表
直接运行 composer show 会列出所有已安装的包名和版本号,但不包含依赖树、许可证或源码路径等细节。它适合快速扫一眼有哪些包,但解决不了“某个包到底装的是哪个具体 commit”或“它依赖了哪些子包”这类问题。
常见误操作是以为这命令能查到详细信息,结果发现输出太简略。真正要看详情,必须指定包名。
composer show vendor/package 查指定包的完整元数据
加上包名(如 composer show monolog/monolog)才会显示该包的完整信息:当前安装版本、最低稳定版本、许可证、源码类型(git/vcs/path)、仓库地址、autoload 配置、require 列表,以及它被哪些其他包依赖(即谁 require 了它)。
注意两点:
- 包名必须写全,包括 vendor 名,
composer show monolog会报错找不到包 - 如果包是通过
path类型本地加载的,source字段会显示本地路径而非 git URL - 若项目启用了
minimum-stability为dev,且安装的是 dev 分支,version字段可能显示为dev-main或类似,而非语义化版本号
composer show -i 查看依赖树结构
composer show -i(-i 即 --installed)会以树形结构展示所有已安装包及其依赖关系,比 composer show 多一层嵌套视角。它能帮你快速定位某包是否被重复安装、是否存在版本冲突的间接依赖。
实际使用中容易忽略的是:这个命令默认只显示顶层包的直接依赖,不会展开全部层级——除非你加 -t(--tree),但 -t 是 show 的隐含行为,所以 composer show -i 和 composer show -i -t 效果一样。
性能提示:如果项目依赖极深(比如 Laravel + 大量插件),composer show -i 可能稍慢,但它不触发 autoload 重建,比 composer update --dry-run 轻量得多。
composer show --platform 查 PHP 及扩展环境信息
这不是查包,但常被混淆——composer show --platform 显示的是当前运行环境的 PHP 版本、已启用扩展(如 pdo_mysql、openssl)及它们的版本,用于验证是否满足某个包的 ext-xxx 要求。
典型场景:安装失败时提示 The requested package ext-gd could not be found,此时运行该命令就能确认 gd 扩展是否真的没启用,而不是 Composer 缓存问题。
注意:--platform 不受 composer.json 约束,它读的是实际 PHP CLI 的配置,所以务必用和 Composer 相同的 PHP 可执行文件(例如 php -v 和 which php)来判断。
dev- 或 9999999-dev 的,基本说明装的是开发分支;而 composer.lock 文件里记录的 reference 字段才是真实 commit hash,想确认精确代码快照得去翻 lock 文件。











