Composer怎么查看依赖树 梳理包依赖关系命令详解【技巧】

10次阅读

composer show –tree 是查看依赖树最直接的方式,但默认只显示顶层包依赖;需加 –all(Composer 2.5+)、–no-dev、–depth 等参数查看完整或受限依赖树,或用 composer depends 查反向依赖,支持 –direct/–dev 过滤,还可导出 txt/jsON 格式便于分析。

Composer怎么查看依赖树 梳理包依赖关系命令详解【技巧】

composer show --tree 是查看依赖树最直接的方式,但默认只显示顶层包的依赖。要完整梳理整个项目的依赖关系,得加点参数或换命令。

查看完整依赖树(含开发依赖)

执行 composer show --tree 会从 requirerequire-dev 两部分加载,但默认只展开第一层。加上 -t(即 --tree)还不够,需要显式指定根包或使用递归模式:

  • 查全部依赖(含 dev):composer show --tree --all
  • 只看运行时依赖(排除 dev):composer show --tree --no-dev
  • 限制层级深度(防输出过长):composer show --tree --depth=3

注意:--all 参数在 Composer 2.5+ 才支持;旧版本用 composer show -t 后手动翻页,或改用 composer depends --tree 反向查。

定位某个包被谁引用(反向依赖)

当想删掉一个包却不敢动,怕影响其他依赖时,composer dependsshow 更有用:

  • monolog/monolog 被哪些包直接或间接依赖:composer depends monolog/monolog
  • 只看直接依赖(不递归):composer depends --direct monolog/monolog
  • 查某个包是否被 require-dev 引用:composer depends --dev monolog/monolog

这个命令能快速识别“隐藏依赖”——比如某个测试工具被主项目没声明,却被另一个 dev 包拉了进来。

导出依赖树为文本或 json 方便分析

终端滚动太快?需要存档或写脚本处理?composer show 支持格式化输出

  • 生成可读性高的缩进树文本:composer show --tree --format=txt > deps-tree.txt
  • 导出结构化 JSON(适合后续解析):composer show --tree --format=json > deps.json
  • 过滤特定关键字(如只看 laravel 相关):composer show --tree | grep "laravel"

注意:--format=json 输出的是扁平列表而非嵌套树,真要树形 JSON 得自己解析 txt 输出或用第三方插件如 composer-visualize

依赖树不是越深越好,有些包通过多层间接引入,版本冲突风险更高;--tree 默认不标出版本冲突,得配合 composer why-notcomposer update --dry-run 交叉验证。真正难的不是看到依赖,而是判断哪一层该锁定、哪一层该升级。

text=ZqhQzanResources