使用go mod graph命令可查看Golang模块依赖关系,输出格式为“依赖者 → 被依赖者”,结合Graphviz工具可生成可视化依赖图;通过命令go mod graph | dot -Tpng -o dep_graph.png将文本依赖转换为图像,便于分析项目结构;还可安装modviz等第三方工具生成更清晰的SVG格式依赖图,支持缩放与搜索;使用go mod why -m可追踪特定模块的引入原因,帮助排查冗余或冲突依赖。

在Golang中查看模块依赖图,可以通过内置命令和第三方工具两种方式实现。最直接的方法是使用 go mod graph 命令,它能输出项目依赖的扁平化列表,再配合可视化工具生成图形。
使用 go mod graph 查看文本依赖关系
进入你的Go模块根目录,运行以下命令:
go mod graph该命令会输出所有模块之间的依赖关系,每行格式为:
依赖者 → 被依赖者
例如:
rsc.io/sampler@v1.3.1 golang.org/x/text@v0.3.0
这个输出虽然不是图形,但可以清楚看到模块间的引用链。
将依赖图可视化(推荐)
你可以将 go mod graph 的输出转换成可视化的依赖图。常用方法是结合 Graphviz 工具。
立即学习“go语言免费学习笔记(深入)”;
步骤如下:
- 安装 Graphviz(用于绘图)
- 使用命令将依赖数据转为图片
示例命令:
go mod graph | dot -Tpng -o dep_graph.png执行后会生成一张名为 dep_graph.png 的依赖关系图。如果系统未安装 dot,可通过包管理器安装 graphviz。
使用第三方工具增强分析
除了原生命令,还可以使用专门的工具提升可读性:
- modviz:一个轻量级工具,能生成更清晰的依赖图
- godepgraph:支持生成调用图和模块图,基于 AST 分析
以 modviz 为例:
# 安装go install github.com/loov/modviz/cmd/modviz@latest
# 生成 SVG 图像
modviz -file=dependencies.svg
它会自动读取 go.mod 并生成美观的依赖图,支持缩放和搜索。
过滤和分析特定依赖
若只想查看某一个模块的依赖路径,可以结合 grep 或使用:
go mod why -m example.com/module这条命令会显示为什么该项目需要引入该模块,帮助理解依赖来源。
基本上就这些。通过 go mod graph 配合绘图工具,就能快速掌握项目的依赖结构,排查冗余或冲突依赖也更方便。不复杂但容易忽略。










