如何确定哪个 module/s 使用间接依赖?

How to determine which module/s use an indirect dependency?

在 Go 1.17 中 go.mod 有两个部分,直接依赖和间接依赖,但是,没有说明间接依赖与直接依赖之间的关系。

如何找出特定的间接依赖是哪个或哪些模块使用了它?

go mod why -m $MODULE 会给你一个(任意选择的)导入链,从你模块中的一个包到 $MODULE 中的一个包。但是,它本身并不报告所有此类路径。

go list -json all 确实暴露了足够的信息来识别这些路径,但它没有提供一种简单的方法来呈现供人类消费的导入链。但是,某些第三方工具(例如 goda and gomod)可以转换或查询来自 go list 的输出,具有更多结构。 (有关查询语法和示例,请参阅他们的文档。)