Composer 官方无 graph 命令,依赖图需用第三方工具或 composer show -t + grep 查看;反查依赖用 composer show 包名 查 required-by 字段;生成可视化图推荐 bitexpert/composer-graph + graphviz。
composer
graph 命令根本不存在
Composer 官方没有内置生成依赖图的命令,
是常见误解,直接运行会报错:
。想可视化依赖关系,得靠第三方插件或手动导出数据再处理。
用 composer dependents 查看谁依赖某个包
这是最常用、最轻量的排查方式,适合快速定位“这个包被哪些项目/包引用了”。它不画图,但能立刻回答“谁在用我”:
不是必须的——
是
或
这类插件提供的,不是 Composer 原生命令
推荐安装轻量插件:
不相关;正确做法是:
也不对;实际应执行:
?错——最稳的是:
?太重。真正简单可用的是:
?无关。
别绕弯:直接用官方支持的
(tree)查看当前项目的完整依赖树,再配合
筛选:
若要反查“谁依赖 monolog”,得先知道它是否被直接 require:运行
,看输出里的
和
字段——后者只显示**直接依赖它的包**,不包括传递依赖
导出 dependency JSON 再用 graphviz 渲染
这是真正生成可视图的可靠路径,但需要两步:先提取结构化数据,再交给绘图工具。关键不是“一键出图”,而是控制输出精度:
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
用
导出生产依赖的 JSON,注意加
,否则 dev-only 包(如 phpunit)会污染图谱
JSON 输出不含层级关系,需用脚本扁平化解析;更省事的是用社区工具:
,然后运行:
该工具默认包含所有依赖(含 dev),容易生成巨图;建议加
参数,或手动删掉
中的包名再运行
渲染失败常见于系统没装 graphviz:
;macOS 用
,Ubuntu 用
,Windows 用户优先考虑跳过这步,改用在线解析 JSON
依赖循环和软依赖容易被图谱忽略
图形化工具通常只展示
硬依赖,而真实项目中很多关联藏在别处:
PSR-4 自动加载映射不产生 require 关系,但
被
的日志门面调用,这种“软依赖”不会出现在图中
循环依赖(A → B → A)在
中会显示为截断(
),但 graphviz 图可能直接崩溃或无限展开
同一包多个版本共存时(如 root require
,而某依赖锁死
),图谱常只画一个节点,掩盖了实际安装的两个版本实例
依赖图不是拓扑快照,而是特定视角下的投影。你看到的连线,永远少于代码里真实的调用链。
composer graphCommand "graph" is not defined.composer require --dev graphp/graphvizdependentscomposer-unusedcomposer-show-dependentscomposer global require nunomaduro/larastancomposer global require bamarni/composer-bin-plugincomposer require --dev jenssegers/laravel-composerdumpcomposer require --dev vaimo/composer-config-readercomposer require --dev roave/security-advisoriescomposer show -tgrepcomposer show -t | grep "monolog/"composer show monolog/monologrequiresrequired-bycomposer show --format=json --no-dev--no-devcomposer require --dev bitexpert/composer-graphvendor/bin/composer-graph --format=png --output=deps.png--exclude-devrequire-devdot: command not foundbrew install graphvizapt install graphvizrequiremonolog/monologlaravel/frameworkcomposer show -t... (circular)guzzlehttp/guzzle:^7.0^6.5