跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Composer如何导出详细的依赖图谱_Composer可视化分析技巧

Composer官方未实现composer graph或viz命令,运行必报“Command not defined”;可行方案为:①用composer show --recursive --format=json导出数据+Graphviz渲染,②安装第三方插件markuspoerschke/composer-dependency-graph直接生成HTML/PNG图。 composer graph 命令根本不存在 别再试
composer graph
或
composer viz
了,Composer 官方从没实现过这两个命令。运行后一定会报错:
Command "graph" is not defined
。这不是你环境没配好,是源码里压根没这功能。 真正能落地的方案只有两个:用
composer show --format=json
导出数据 + Graphviz 渲染;或者装第三方插件
markuspoerschke/composer-dependency-graph
直接出图。 用 composer show + Graphviz 手动生成 DOT 图 这是最可控的方式,适合 CI 脚本、需要定制样式或离线环境。关键不是“怎么画”,而是“怎么导出干净可渲染的数据”:
composer show --recursive --format=json
才能拿到完整依赖树(不加
--recursive
只有直接依赖) 输出里的
dev-master
、
self.version
、
dev-develop
这类占位符必须过滤掉,否则
dot
会报语法错误 别用
composer show --tree
的缩进文本去解析——它不是结构化格式,缩进层级易受描述长度干扰,脚本解析极易出错 确认系统已安装 Graphviz:
dot -V
要能输出版本号;渲染命令形如:
dot -Tpng composer-deps.dot -o deps.png
用 composer-dependency-graph 插件快速出 HTML/PNG 本地临时分析最省事:装完就能跑,自动处理 DOT 生成和调用,还带交互式 HTML 视图。 安装命令:
composer global require markuspoerschke/composer-dependency-graph
Composer 2.9.6 Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。 下载 常用操作: 生成 PNG:
composer graph --type=png
生成可点击的 HTML:
composer graph --type=html
排除 dev 依赖:
composer graph --no-dev
只看某个包的依赖路径:
composer graph monolog/monolog
注意:插件默认读取当前项目下的
composer.lock
,如果 lock 文件缺失或过期,图谱可能不准确。 为什么不能直接靠 composer.json 或 vendor 目录生成图谱 图谱的核心是「实际解析后的依赖关系」,不是声明或文件存在状态:
composer.json
只写约束(如
"^2.0"
),不记录最终选中的版本和路径,无法还原真实依赖边
vendor/
目录只反映“已安装”,但无法区分哪个包是因为 A 依赖 B 而被拉入,还是因为 C 显式 require —— 没有来源上下文,画不出有向边 只有
composer show --recursive --format=json
或
composer.lock
包含完整的父子引用映射,且字段稳定(
require
字段明确列出子依赖名) 最容易被忽略的一点:循环依赖在 JSON 输出里会被截断或标记为
null
,而 Graphviz 渲染时若未预处理,会导致图断裂或静默失败——生成前务必检查 JSON 中是否有
"require": null
或空对象。

相关文章