composer怎么导出依赖清单_composer导出已安装包列表教程

2次阅读

composer show 是查看已安装包最轻量可靠的方式,读取 vendor/composer/installed.json,不依赖网络;加 -s 显示精简列表,–format=json 输出结构化数据,指定包名可查依赖树,–tree 展示完整依赖关系。

composer怎么导出依赖清单_composer导出已安装包列表教程

composer show 列出所有已安装包

直接运行 composer show 就能输出当前项目中所有已安装的依赖包及其版本号,这是最轻量、最可靠的方式。它读取的是 vendor/composer/installed.json,不依赖网络,也不触发 autoload 重建。

常见错误是误用 composer list——那只是列出 Composer 自带命令,不是你的依赖。

  • -s 参数(composer show -s)可显示精简列表,只含包名和版本,适合复制粘贴
  • --format=jsoncomposer show --format=json)输出结构化 JSON,方便脚本解析
  • 想查某个具体包?直接 composer show monolog/monolog,会显示其依赖树和详细信息

composer show –tree 查看完整依赖关系图

当你要确认某个包为什么被装进来(比如排查冲突或冗余),composer show --tree 比单纯列表有用得多。它从 root 项目出发,逐层展开每个包所依赖的子包,缩进表示层级。

注意:这个命令默认只显示顶层直接依赖的树;如果某个间接依赖没出现在任何直接依赖的 require 里,它可能不会出现在根路径下——这不是 bug,是 Composer 的扁平化安装策略导致的。

  • 输出可能很长,建议配合 grep 过滤,例如:composer show --tree | grep "guzzlehttp"
  • windows PowerShell 用户需用 findstr 替代 grep
  • 该命令不支持 --format=json,JSON 输出目前仅限于普通 show

导出为 lock 文件快照:composer install –dry-run 不真装也能验依赖

很多人想“导出清单”其实是为部署或审计做准备,这时候真正需要的不是人眼可读的列表,而是可复现、可校验的依赖快照——那就是 composer.lock 本身。

如果你还没生成过 lock 文件,或者想验证当前 composer.json 能解析出什么确定版本,用 composer install --dry-run 最稳妥。它会计算依赖、输出将要安装的包和版本,但不写入 vendor 或修改 composer.lock

  • 输出里包含 Package operations 区块,清晰列出每个包的源(dist / source)、版本、是否 dev
  • composer update --dry-run 更轻:后者会尝试升级,前者只按现有约束求解
  • CI 环境中常用它做预检,避免上线前才发现版本解析失败

别用 composer dump-autoload 导出依赖

composer dump-autoload 只是重新生成自动加载文件,跟依赖清单完全无关。有人看到它输出 “Generating autoload files” 就误以为在“导出”,结果白跑一轮还污染了 vendor/autoload.php

更隐蔽的坑是:某些旧脚本会把 composer install --no-install 当作“只导出”,但这个参数根本不存在——Composer 会静默忽略,然后照常安装。正确做法永远是用 --dry-run 或直接读 composer.lock

  • composer.lock 是权威来源,字段 packagespackages-dev 分别对应 require / require-dev
  • 若需纯文本清单(如给安全团队),用 jq 提取:jq -r '.packages[].name + "@" + .packages[].version' composer.lock
  • 不要解析 vendor/autoload.php 或遍历 vendor/ 目录——Composer 支持自定义安装路径,目录结构不可靠

依赖清单的本质不是“有哪些包”,而是“哪些确切版本被锁定”。盯着 composer.lock 看,比任何命令输出都准;而 composer show 是唯一既快又稳的人工检查方式。其他花活,大概率绕远路。

text=ZqhQzanResources