go list -m all用于列出当前模块及其所有直接、间接依赖的模块版本,需在含go.mod的根目录执行,加-json可结构化输出,all是关键字不可替换。
查看当前模块的依赖树用 go list -m all
这个命令能列出当前模块及其所有直接、间接依赖的模块版本,是排查依赖冲突或升级影响的第一步。它读取 go.mod 文件并递归解析,结果按字母序排列,不反映实际加载顺序。
常见错误现象:go list -m all 在未初始化模块的目录下报错 no modules found;或在子目录中执行时误以为显示的是该子包的依赖,其实仍是根模块视角。
- 务必在模块根目录(含
go.mod的目录)下运行 - 加
-json参数可输出结构化数据,方便脚本处理:go list -m -json all - 若只想看直接依赖(不含 transitive),用
go list -m -f '{{if not .Indirect}}{{.Path}} {{.Version}}{{end}}' all -
all不是通配符,是特殊关键字,不能替换成./...或其他路径
查某个具体模块的详细信息用 go list -m -f
比如想知道 golang.org/x/net 在当前构建中实际用的是哪个 commit 或版本,就得靠模板格式化输出。默认只打印路径和版本,但 -f 可以提取 .Replace、.Indirect、.Time 等字段。
使用场景:确认是否命中了 replace 规则;判断某依赖是否为间接引入;检查模块发布时间是否异常老旧。