如何获取所有依赖项(模块)?

How to get all dependencies (modules) used?

我尝试获取我的项目使用的所有依赖项。

我查看了 go.mod 文件,虽然它只包含我添加的 dependencies/modules,而不是我的依赖项中的依赖项。

查看 go.sum 文件,这看起来更有希望,但后来我注意到它包含多个重复项。即使我只使用一个版本的依赖项。例如:

github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=

如何获得仅包含所有活跃使用的列表dependencies/modules?

关于这 2 个文件,您是对的,从技术上讲,您可以通过向 go.mod 文件添加替换语句来清理 go.sum。但是,您(和您的团队)始终保持清洁并不可靠。

在我看来,获得所需列表的最佳方式是 go list -m all(或 go list --json -m all 以获得 json 响应)。它会递归地列出你项目中的所有依赖项。但是过滤掉不用的。