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

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

GoCenter UI显示了GoCenter存储库中使用该模块的每个Go模块版本。
从GoCenter计算下载
的所使用的TAB告诉您您的模块被其他模块引用的范围。但它的影响到底有多深呢?点击新建指标选项卡可查看该模块的进一步统计数据,包括每周交付的下载次数。

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

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

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