composer show vendor/package-name 是查包详情最常用可靠方式,需在项目根目录运行且包名写全;加 -s 查 autoload 和 scripts 配置;--tree 查依赖树,composer depends --tree 查谁依赖它;--all 和 --remote 查远程版本与元数据。

直接查包详情:用 composer show vendor/package-name
这是最常用也最可靠的入口,不加参数的 composer show 只列顶层依赖(composer.json 里写的),根本看不到你真正想确认的 autoload 映射、作者、许可证这些关键字段。
- 必须在项目根目录(有
composer.json的地方)运行,否则报错或返回空 - 包名要写全,比如
monolog/monolog,不能只写monolog(会提示“Package not found”) - 输出里
require字段是它自己依赖谁,不是你项目依赖它——这点容易看反 - 如果包没装上(比如被
--no-dev跳过),这个命令就查不到,得先确认安装状态
看 autoload 和 scripts 配置:加 -s 参数
类找不到?自定义命令执行失败?八成是 autoload 或 scripts 配置没生效,-s(即 --show-config)能直接把这两块展开给你看。
-
composer show -s monolog/monolog会显示"Monolog\": "src/"这样的映射,说明MonologLogger对应vendor/monolog/monolog/src/Logger.php -
scripts区域列出所有可运行的命令(如post-install-cmd),方便你手动触发调试 - 注意:
-s在 Composer 2.2+ 才稳定支持,旧版本会报“unrecognized option”,别硬试
查依赖树和引用关系:用 --tree 或 composer depends
composer show --tree vendor/package-name 是正向依赖视角,但经常更需要知道“谁把我拉进来的?”——比如某个旧版 psr/log 冲突了,得定位源头。
-
composer show --tree guzzlehttp/guzzle展示 Guzzle 依赖了哪些包,缩进层级清晰 - 反过来查谁依赖它:
composer depends --tree guzzlehttp/guzzle,这比 grep 更准,能穿透多层间接依赖 - 输出太长时别硬翻,直接管道过滤:
composer show --tree | grep "ext-xml" -
--tree默认只展示已安装的包,如果某依赖被--ignore-platform-reqs绕过,它也不会出现在树里
查远程信息和所有可用版本:--all 和 --remote
还没装包,但想评估是否引入?或者怀疑本地装的是旧版?这时候不能只看已安装数据。
-
composer show --all guzzlehttp/guzzle列出 Packagist 上所有发布版本(含未安装的),适合做升级决策 -
composer show --remote laravel/framework拉取最新元数据,包括homepage(通常是文档地址)、license、type等,不依赖本地是否安装 -
--all和--remote本质都是查远程仓库,区别在于前者默认只显示稳定版,后者强制刷新一次最新快照 - 网络不通或 Packagist 临时故障时,这两个命令会卡住几秒再报错,别以为是命令写错了
composer show 输出里可能有多个字段指向不同来源——source 是 Git 地址,dist 是 ZIP 下载链接,homepage 是官网,三者经常不一致。遇到问题时,得对照着看,而不是只信其中一个。










