Composer怎么查看已安装的包_Composer show命令使用指南【常用】

4次阅读

composer show 命令仅显示 composer.lock 中直接声明的依赖包,不递归子依赖;加 –tree 才展示完整安装树;需在项目根目录执行且依赖 composer.lock 文件存在。

Composer怎么查看已安装的包_Composer show命令使用指南【常用】

直接列出所有已安装包:用 composer show 就够了

在项目根目录(有 composer.jsoncomposer.lock 的地方)运行 composer show,就能立刻看到当前 vendor 下所有**直接声明的依赖包**及其版本、描述——不联网、不扫描文件,只读 composer.lock,快且可靠。

  • 默认只显示 requirerequire-dev 中你手动写的包,不展开它们的子依赖
  • 如果 composer.lock 不存在(比如刚初始化但没 run 过 composer install),命令会返回空或报错,这时 composer show 没意义,得先装依赖
  • 别在错的目录执行:常见问题是终端当前路径不是项目根目录,结果提示 Command "show" is not defined 或输出为空——先 ls composer.json 确认位置

想看完整依赖树?必须加 --tree

composer show 不加参数 ≠ 查看全部已安装包。它不递归;而 composer show --tree 才真正反映 vendor 目录里实际存在的所有包及其嵌套关系。

  • 输出是缩进结构,例如 monolog/monolog 下面跟着 psr/log,再下一层可能是 psr/cache(如果被引用)
  • 同一包被多个父包依赖时,只显示第一次出现的路径,不会重复展开——这既是简化也是陷阱,容易误判“某个包没被装”
  • 输出太长?直接管道过滤:composer show --tree | grep "guzzlehttp" 或用 less 分页查看
  • 注意:若某包因版本冲突被丢弃(没进最终解析结果),--tree 也不会显示它——它展示的是 Composer 实际安装的那一棵“活树”,不是所有可能路径

查某个包的详情或是否装了:composer show vendor/package

这是排查类加载失败、版本不一致、autoload 配置问题的第一步。指定包名后,composer show 会输出它的安装路径、源类型(git/dist)、require 列表、autoload 规则等。

  • 包名大小写敏感,symfony/consoleSymfony/Console;拼错就报错:Package not found: xxx
  • 如果刚 composer require xxx 但中途中断或网络失败,vendor/ 里没文件、lock 里也没记录,那这个包就“不存在”,composer show xxx 必然失败
  • -s--source)能看到 git URL 和 commit hash,适合验证是否用了 fork 分支或 dev 版本
  • --format=plain 可获得纯文本两字段输出(vendor/name version),方便 CI 脚本做字符串匹配,比如检查是否用了带安全修复的 doctrine/annotations v1.14.3

为什么 composer show 没反应或报错?先盯住这三个点

90% 的问题和命令本身无关,而是环境或状态异常。别急着搜“show 命令失效”,先快速过一遍:

  • pwd 是否在项目根目录?ls -l composer.{json,lock} 确认两个文件都存在且可读
  • 是否设置了错误的 COMPOSER 环境变量?临时绕过:COMPOSER= composer show
  • Composer 版本太老(尤其是 1.x 用户):运行 composer self-update 升级;旧版可能不支持 --tree 或把 show 当作未定义命令

真正容易被忽略的是:依赖状态以 composer.lock 为准,不是 vendor/。删了 vendor 但 lock 还在?composer show 仍能工作;lock 没了?那就只剩 composer.json,而 show 对它无能为力。

text=ZqhQzanResources