Composer怎么查看已安装的包 列出当前项目依赖列表【命令】

10次阅读

composer show 列出当前项目 vendor 下所有已安装包及其版本号,按字母序排列;加 -i 仅显示 composer.json 中直接声明的包;加 –tree 展开指定包依赖树;若提示命令未定义,说明 Composer 版本过旧。

Composer怎么查看已安装的包 列出当前项目依赖列表【命令】

composer show 查看当前项目所有已安装包

直接运行 composer show 就能列出当前项目 vendor/ 下全部已安装的包及其版本号,按包名字母序排列。这是最常用、最轻量的方式,不依赖网络,只读取本地 composer.lock 和已安装文件。

  • -i 参数(即 composer show -i)可只显示「直接声明在 composer.json 中」的包,排除递归依赖
  • --tree(如 composer show --tree vendor/package-name)能展开某个包的完整依赖树
  • 如果提示 Command "show" is not defined,说明 Composer 版本太老(composer list + 手动筛选

composer list –help 看清可用子命令和别名

composer list 本身不输出包列表,但它会列出所有内置命令——其中 showoutdateddepends 都和依赖查看强相关。注意:Composer 2.x 把 show 设为默认命令,所以 composer show 可简写为 composer(但不推荐,易混淆)。

  • composer outdated 只显示有新版本的包,适合检查是否该更新
  • composer depends vendor/package 能反查哪个包依赖了指定包(对排查冲突有用)
  • 别名如 composer show -s 是无效的,-s 并非 show 的合法选项,容易输错

查看 lock 文件比 vendor 更可靠

有时候 vendor/ 缺文件或没执行过 composer installcomposer show 可能漏包或报错。此时应优先信任 composer.lock——它记录了精确安装状态。可用 jq 或文本工具解析:

jq -r '.packages[] | "(.name) (.version)"' composer.lock | sort
  • 该命令要求系统装有 jqwindows 用户可用 composer show 替代,不必强求解析 JSON
  • composer.lock 中的 packages-dev 字段包含开发依赖,composer show --dev 才能一并列出
  • composer.lock 不存在,说明项目从未成功安装过依赖,composer show 必然为空

常见错误:为什么 composer show 没反应或报错?

多数问题出在工作目录或权限上,不是命令本身的问题。

  • 当前路径不在项目根目录(即没有 composer.jsoncomposer.lock)→ 切到正确目录再试
  • 运行了 composer install --no-scripts 后又删了 vendor/composer show 仍可读 composer.lock,但若连 lock 都没了,就只能看 composer.json
  • 使用了自定义 COMPOSER 环境变量指向了错误的配置文件 → 临时取消变量:COMPOSER= composer show

真正要注意的是:包列表是否包含 dev 依赖、是否反映真实安装状态、以及你到底想解决什么问题——是升级检查?还是排查冲突?还是审计安全?选对命令比记住所有参数更重要。

text=ZqhQzanResources