GoCenter如何连接Go模块作者与消费者

更新:自2021年5月1日起,GoCenter中央存储库已被淘汰,所有功能已弃用。有关中心日落的更多信息,请阅读弃用博客文章
毫无疑问,Go模块是Golang的一部分。超过30万版本的Go模块在JFrog GoCenter显示了它们是如何被Go社区用于包管理的。与Go模块现在在Golang 1.13中默认启用,公开可用模块的数量将增长得更快——其中一些可能是由您贡献的。
但是一旦你与社区共享了一个Go模块项目,它会发生什么?它会被使用吗?我们都希望我们的项目变得有用和受欢迎作证或logrus,但你怎么知道呢?
当Go模块的作者知道谁在使用他们的模块,什么版本更受欢迎,在什么领域,他们可以做出更好的决定。作者可以一起协作来改进测试等方面。作者可以与模块的使用者一起讨论新的特性或设计。
这是我们在设计GoCenter公共用户界面时一直考虑到的GOPROXY.GoCenter帮助你找到在它的中央存储库中,一旦你这样做了,你也会对他们有更多的了解。
Using Used By for Go包
在Gocenter中搜索模块,然后查看模块页面。单击所使用的选项卡。

GoCenter UI显示了GoCenter存储库中使用该模块的每个Go模块版本。
统计GoCenter的下载量
的所使用的TAB告诉你你的模块被其他模块引用的范围有多广。但它的影响到底有多深呢?点击新的指标TAB查看该模块的进一步统计信息,包括每周交付的下载量。

工作原理
现在让我们讨论一下GoCenter如何识别这些关系。构建版本到版本的模块关系并不简单。类中的依赖项和祖先项都适用所使用的图。
对于已经采用go模块的项目,构建版本到版本的模块关系是很容易的,因为依赖版本被锁定在一个“go”中。国防部的文件。然而,对于大多数用Golang编写的开源项目来说,情况并非如此。
对于采用其他依赖管理器的项目,例如滑翔或godep,版本到版本模块的关系可以通过' go mod init '来获取,因为这个命令也会生成一个' go. init '。Mod '文件与依赖版本锁定。

在上面的例子中,theKubernetes的Helm包管理器还没有采用Go模块,但自从他们使用部, GoCenter建立版本到版本的模块关系mod init.
具有挑战性的部分是,当用Golang编写的开源项目不使用任何依赖管理器时,该怎么办,因此没有固定的版本控制。在这种情况下,GoCenter会运行“go mod tidy”(以一种非常简单的方式解释),并捕获依赖项版本以及GoCenter运行该命令的时间戳。时间戳帮助GoCenter跟踪版本到版本模块关系的变化。的界面下,GoCenter突出显示了这一点国防部文件标签,如下例所示:

GoCenter Public GOPROXY的功能
GoCenter是一个公共的GOPROXY,用于开源Go模块帮助你加速Go应用程序的构建.但它也是一个重要的工具,可以告诉你这些Go模块,以及它们之间的关系。如果你是Go模块的作者,了解谁在使用你的项目可以提供有助于你的工作和Go社区不断改进的见解。