49 lines
1.4 KiB
Markdown
49 lines
1.4 KiB
Markdown
# Visualizing the Dependency Graph
|
|
|
|
## go mod graph (Built-in)
|
|
|
|
```bash
|
|
go mod graph
|
|
```
|
|
|
|
Output: each line contains two space-separated fields (module and its requirement) in `path@version` format:
|
|
|
|
```
|
|
example.com/main github.com/google/uuid@v1.6.0
|
|
example.com/main golang.org/x/text@v0.3.7
|
|
github.com/google/uuid@v1.6.0 golang.org/x/sys@v0.0.0-20210615035016
|
|
```
|
|
|
|
## go mod why
|
|
|
|
```bash
|
|
go mod why -m github.com/some/module
|
|
```
|
|
|
|
Shows the shortest import path from your code to the module — useful for understanding why an unexpected dependency exists.
|
|
|
|
## Generate a Graph Image with modgraphviz
|
|
|
|
Pin `modgraphviz` as a module tool, then pipe `go mod graph` into it.
|
|
|
|
```bash
|
|
go get -tool golang.org/x/exp/cmd/modgraphviz@latest
|
|
go mod graph | go tool modgraphviz | dot -Tpng -o deps.png
|
|
```
|
|
|
|
Green nodes represent versions selected by MVS (in the final build list). Grey nodes are versions that exist in the requirement graph but are not used.
|
|
|
|
## Interactive Visualization with go-mod-graph
|
|
|
|
`go-mod-graph` (samber/go-mod-graph) is a web-based interactive dependency explorer with zoomable graph, module weight indicators, searchable module list, and MVS algorithm visualization.
|
|
|
|
## Complementary Analysis
|
|
|
|
Pin `digraph` as a module tool for graph queries.
|
|
|
|
```bash
|
|
go get -tool golang.org/x/tools/cmd/digraph@latest
|
|
# General graph queries on go mod graph output
|
|
go mod graph | go tool digraph reverse example.com/some/module
|
|
```
|