Composer怎么查看已安装包_Composer show命令使用详解【查询】

2次阅读

composer show 不加参数仅输出已安装包名(一行一个);加 -i 参数才显示版本、描述等完整信息;未执行 composer install 时无输出;查具体包需写全名如 monolog/monolog。

Composer怎么查看已安装包_Composer show命令使用详解【查询】

composer show 不加参数只显示已安装包列表

直接运行 composer show 会列出当前项目中所有已安装的依赖包(含 require 和 require-dev),但默认不显示版本号、描述或来源——它只输出包名,一行一个。很多人误以为这是“空”或“没结果”,其实是正常行为。

  • 想看完整信息(含版本、描述、源仓库),必须加 -i--installed 参数
  • 不加任何参数时,composer show 实际等价于 composer show --platform=false,即过滤掉 PHP 扩展和平台包
  • 如果项目还没执行过 composer installcomposer updatevendor/ 为空,那 composer show 就真的一行都不输出

查某个具体包的详细信息:composer show vendor/name

composer show 加包名,能精准查看该包的版本、依赖树、autoload 配置、许可证等元数据。这比翻 composer.lockvendor/composer/installed.json 直观得多。

  • 包名必须写全,比如 composer show monolog/monolog,不能只写 monolog
  • 如果包未安装(不在 vendor/ 中),命令会报错:Package monolog/monolog not found
  • 支持通配符,如 composer show "monolog/*" 可批量查 monolog 家族所有已安装包
  • -t 参数可显示该包所依赖的其他包(依赖树),适合排查冲突或冗余依赖

列出所有包并按版本排序:composer show -i –sort=version

composer show -i 是最常用的有效起点,它强制只显示已安装包,并附带版本号和简短描述。加上 --sort=version 后,能快速识别哪些包用了 dev-main、v1.2.x-dev 这类非稳定版本,方便做升级决策。

  • --sort 支持的字段只有 nameversiontype,不支持自定义字段
  • 排序对大小写敏感,symfony/console 会排在 Symfony/Console 前面(如果真有两个)
  • 如果想导出为文本分析,可用 composer show -i --format=json > packages.json,但注意 JSON 输出不含排序逻辑

为什么 composer show 显示的版本和 composer.lock 不一致?

常见现象是 composer show monolog/monolog 输出 2.10.0,但打开 composer.lock 却看到 "version": "2.10.0+xyz""reference": "a1b2c3..."。这不是 bug,而是 Composer 在展示时做了简化处理。

  • composer show 显示的是“解析后的语义化版本”,即 Composer 认为该包当前生效的逻辑版本(通常取自 composer.json 中的 version 字段或 tag)
  • composer.lock 存的是实际安装的 commit reference 或完整 version String,尤其在使用 dev-masterv2.10.0@dev 时差异明显
  • 真正决定运行时行为的是 composer.lock 里的 referencedist.urlshow 命令只是个快照视图,别拿它当权威版本源

实际查包时最容易忽略的是:是否已执行过 composer install。很多 CI 或 docker 构建流程里漏了这步,composer show 就永远是空的——它不读 composer.json,只读 vendor/composer.lock 的交集。

text=ZqhQzanResources