composer show 是查看包详细信息的正确命令,其别名 composer info 功能完全一致;执行 composer show vendor/package-name 可输出含 homepage、source、dist、license 的完整元数据,但 license 字段依赖 vendor/ 存在;不加参数时仅显示 name 和 version 是为避免刷屏;show 基于 vendor/composer/installed.json,反映实际安装状态而非 composer.json 声明。

composer show 是查看包详细信息的正确命令,composer info 仅是它的别名,功能完全一致——但很多人误以为 info 更“轻量”或“只查本地”,其实它和 show 完全等价,底层调用同一逻辑。
如何查已安装包的完整元数据(含文档链接、License、源码地址)
执行 composer show vendor/package-name(如 composer show monolog/monolog)会输出结构化信息,其中关键字段包括:
-
homepage:通常是官网或文档入口,比如https://github.com/Seldaek/monolog—— 这就是你找官方文档的地方 -
source:Git 仓库地址,可用于 fork 或阅读源码 -
dist:压缩包下载地址,含校验 hash,适合审计分发完整性 -
license:许可证类型(如 MIT、Apache-2.0),但注意:若vendor/被清空过,必须先composer install才能显示 license,否则该字段为空
为什么 composer show 不加参数时只列名称和版本?
不带包名直接运行 composer show,它默认走的是「简略列表模式」,只展示已安装包的 name 和 version。这不是 bug,而是设计取舍:避免在大型项目中刷屏输出几十个包的全部字段。
- 想快速扫一遍装了哪些包?用
composer show - 想确认某个包是否装对了版本?用
composer show vendor/name - 想批量导出所有包的 homepage?得写脚本解析输出,因为 Composer 没提供原生 CSV/JSON 导出选项
composer show 和 composer depends 的本质区别
composer show 回答的是「这个包自己长什么样」,而 composer depends vendor/package 回答的是「谁在依赖它」——这是两个完全不同的依赖视角。
-
composer show symfony/console→ 显示 Symfony Console 包的版本、描述、主页等 -
composer depends symfony/console→ 列出当前项目中哪些包(如laravel/framework)声明了对它的依赖 - 容易踩的坑:有人想查「哪个包提供了
psr/log」,结果错用show psr/log(根本不存在这个包名),正确做法是composer depends psr/log或composer show --all | grep "psr/log"
真正容易被忽略的一点是:所有 show 输出都基于 vendor/composer/installed.json,也就是说,它反映的是「当前 vendor 目录里实际存在的状态」,而非 composer.json 声明的理想状态——如果刚删了 vendor/ 又没重装,show 就啥也查不到。










