【发布时间】:2022-11-12 13:29:45
【问题描述】:
在 Go 1.17 中,go.mod 有两个部分,直接依赖项和间接依赖项,但是,没有说明间接依赖项与直接依赖项之间的关系。
我如何才能找出特定的间接依赖项是哪个模块或哪些模块使用它?
【问题讨论】:
-
请注意,这在 Go 1.17 中并不新鲜。间接依赖总是存在于 go.mod 中,它们只是在 Go 1.17 中被移动到一个新的部分。
标签: go dependencies go-modules
在 Go 1.17 中,go.mod 有两个部分,直接依赖项和间接依赖项,但是,没有说明间接依赖项与直接依赖项之间的关系。
我如何才能找出特定的间接依赖项是哪个模块或哪些模块使用它?
【问题讨论】:
标签: go dependencies go-modules
【讨论】:
go mod graph 是可接受的替代方案吗?
// indirect 部分导入了某个包时,才会将模块依赖添加到该部分,但 go mod graph 根本不检查包导入图——它只报告模块之间的依赖关系,而不是那些模块中的包。
go mod graph 会给你一个保守的近似值。 (它会报告一些模块到模块的边缘,这些边缘是由与您的程序实际上不相关的包产生的。)
go.mod 文件中的indirect 模块,真正重要的唯一用途是由主模块传递导入的包。这实际上取决于他们试图回答哪个问题:go mod graph 回答“为什么是这个特定版本?”,而包导入图回答“为什么是这个模块?”。