composer show 可查已安装包的完整元数据、所有可用版本及依赖树:不加参数列简略列表,加 vendor/package 查详情,-a 查所有版本,--tree 查当前依赖结构,但不显示 autoload 和 scripts。

直接用 composer show 就能查到包的完整元数据,包括版本、依赖、许可证、源码地址等,不需要装额外插件或手动翻 composer.json。
查某个包的基本信息:用 composer show vendor/package
这是最常用场景。比如想看 monolog/monolog 当前安装的版本和描述:
composer show monolog/monolog
输出里会包含:name、description、type、license、homepage、source、dist 等字段。注意:source 是 Git 仓库地址,dist 是压缩包下载地址,两者都可能为空(比如本地路径安装的包)。
- 如果提示
Package not found,说明该包没被当前项目 require,或者没 install 过 ——show只查已安装或已 lock 的包,不查 Packagist 全库 - 不加参数直接运行
composer show会列出所有已安装包的简略列表(一行一个),但不带详情 - 包名必须写全,
composer show monolog不会自动补全为monolog/monolog
查某个包所有可用版本:加 -a 参数
想确认能不能升级到 v3.0.0?或者想知道有哪些历史版本可选?用:
composer show -a monolog/monolog
这会拉取 Packagist 上该包全部 tag 和分支(包括 dev 分支),按语义化版本排序。注意:
- 输出中带
*的是当前项目实际使用的版本 - 有些版本标
dev-前缀(如dev-main),表示对应 Git 分支,不是稳定 release - 这个命令会发起网络请求,若离线或 Packagist 不可达,会卡住或报错
查包的依赖关系图:用 --tree 或 --recursive
想快速看清 laravel/framework 依赖了哪些子包,以及它们各自的版本约束:
composer show --tree laravel/framework
它会递归展开依赖树(默认只展一层),每行显示 package/version (by requirement)。关键点:
-
--tree显示的是「当前已安装」的依赖结构;--recursive则强制重新解析 composer.lock,更准但更慢 - 如果某依赖显示为
not installed,说明它被 require 了但没满足版本约束,composer install时会失败 - 别指望靠这个发现循环依赖 —— Composer 本身禁止循环 require,
show --tree遇到时只会截断
查包的 autoload 和 scripts 配置:需要看源码或 composer.json
composer show 不会输出 autoload 映射或 scripts 定义。这些信息只存在包自己的 composer.json 里。如果你需要确认 PSR-4 命名空间是否生效,或者某个 post-install-cmd 脚本是否存在:
- 先用
composer show vendor/package找到source地址 - 去 GitHub/GitLab 页面打开它的
composer.json,或本地进vendor/vendor/package/composer.json - 别依赖
show查 autoload —— 它连autoload-dev都不展示
真正容易被忽略的是:包的 require-dev 依赖不会出现在 show --tree 输出里,除非你加了 --all 参数(且当前环境启用了 dev 模式)。











