如何确定哪个模块使用间接依赖?

dim*_*mus 20 dependencies go go-modules

在 Go 1.17 中,go.mod 有两个部分,直接依赖项和间接依赖项,但是没有指示间接依赖项与直接依赖项如何相关。

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

bcm*_*lls 37

go mod why -m $MODULE将为您提供从模块中的包到$MODULE. 但是,它本身并不报告所有此类路径。

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

  • 相关,但对于OP提出问题的意图可能没有那么有用。他们询问“对于特定的间接依赖,哪个或哪些模块使用它”,但对于“go.mod”文件中的“间接”模块,真正重要的唯一用途是由主模块传递导入的包。这实际上取决于他们试图回答哪个问题:“go mod graph”回答“为什么这个特定版本?”,而包导入图回答“为什么这个模块?”。 (2认同)