应使用可视化工具替代 composer show -t:composer-dependency-graph 生成交互式 HTML 图,轻量且开箱即用;需搭配 Graphviz 的 composer-visualize 则适合导出 SVG/PNG 静态图。

别硬啃文本树——超过 200 行的 composer show -t 输出基本没法靠人眼定位关键路径,必须切到可视化工具。
为什么 composer show -t 看着像树,实际很难读
缩进只表示 require 声明层级,不反映加载顺序、不标版本冲突、不折叠重复包。比如 guzzlehttp/guzzle 在 2 级和 5 级各出现一次,你得手动比对括号里的版本号(如 [7.4.0] 和 [7.8.1])才能判断是否真有冲突;终端宽度不够时换行错位,缩进直接对不上;--no-dev 必须放在 -t 前面,写成 composer show -t --no-dev 就会报错或失效。
-
composer show -t .是当前项目全量依赖树,但默认包含所有require-dev,干扰主干分析 -
composer show -t guzzlehttp/guzzle只展开该包下游,适合聚焦单点,但无法看到它被谁拉入 - 输出里带
[dev-master]或[7.8.1]的括号内容,才是实际安装版本,不是composer.json里写的约束 - 刚改完
composer.json就跑show -t,新包不会出现——先composer update同步composer.lock
用 composer-dependency-graph 生成可交互 HTML 图
这是目前最轻量、维护活跃、兼容 Composer 2.2+ 的可视化方案,不依赖 Graphviz,生成的是纯 HTML + JavaScript,开箱即用。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 安装:
composer require --dev kylekatarnls/composer-dependency-graph - 生成:
./vendor/bin/composer-dependency-graph,默认输出graph.html - 打开 HTML 文件,支持缩放、拖拽、点击节点展开/收起子依赖,鼠标悬停显示版本号和来源
- 加
--filter="topthink/*"可只画 ThinkPHP 生态相关节点,避免图太密 - 如果图里出现双向箭头闭环,就是实锤循环依赖,得立刻查
composer.json里哪两个包互相require
需要 SVG/PNG 静态图?上 composer-visualize + Graphviz
当你要嵌入文档、做培训或导出高清图时,这个组合更合适。注意:Graphviz 是系统级依赖,不是 PHP 包。
- 先装 Graphviz:
brew install graphviz(macOS)、apt install graphviz(Ubuntu/Debian) - 全局安装工具:
composer global require bitexpert/composer-visualize,确保~/.composer/vendor/bin在$PATH中 - 生成 SVG:
composer visualize --format=svg --output=deps.svg,浏览器打开可无损缩放 - 加
--max-depth=2限制层级,避免图爆炸;加--dev才包含require-dev,否则默认忽略 - 如果报
dot command not found,不是 Composer 问题,是系统没装 Graphviz 或路径没配对
真正容易被忽略的点
所有可视化工具都读 composer.lock,不是 composer.json。如果你刚删了某个包但没跑 composer update,图里还会显示它;provide 声明的虚拟包(如 psr/log-implementation)在图中不会展开真实实现,得回退到 composer show -t . 搜关键词确认;同一包多个版本节点并存时,图不会自动标红警告,得你人工点开看版本号是否一致。

















