如何"优雅"地发布自己的 go module 模块到 pkg.go.dev

前言

截止到 go1.13, go 官方推出的包管理工具 go module 已经发布三个版本了,网上也有很多文章介绍如何使用 go module(推荐观看附录中Go夜读的视频和官方Wiki),但是大部分都是讲如何引用别人的 go module 模块,鲜有提到如何发布自己的 go module 包的文章。本文将主要介绍如何“优雅”地发布自己的 go module 模块。
本文的代码和命令均在 ubuntu 19.10 中运行,go 的版本为 1.13.5

pkg.go.dev简介

go.dev 是go官方团队于2019年11月上线的集合go开发资源的网站,包括一些学习课程和一些go的案例,当然最重要的就是提供了go的第三方包的检索功能。没错,他就是用来取代原来的godoc.org的,现在godoc.org上也有提示提醒用户迁移到pkg.go.dev。在这篇文章中,我们将把go module模块发布到pkg.go.dev。
BTW,在我写这篇文章的时候(2020.02.19),go官方刚好也宣布了go.dev不久将开源。

发布第一个版本

这次要发布的代码放在github,所以新建一个项目叫how-to-release-go-module, 新增hello.go 文件

为hello.go添加两个方法和相关注释

package pkg

import "fmt"

// Hello says hello.
func Hello() {
   
	fmt.Println("Hello go mod!")
}

// Bye says bye.
func Bye() {
   
	fmt.Println("Bye go mod!")
}

执行 go mod init 生成go.mod文件

go mod init
go: creating new go.mod: module github.com/YouEclipse/how-to-release-go-module

内容如下:

module github.com/YouEclipse/how-to-release-go-module

go 1.13

我们把代码push 到远端分支,看起来好像第一个版本就发布完毕了。我们打开pkg.go.dev搜索一下github.com/YouEclipse/how-to-release-go-module这个包,却返回未找到这个包。这是为何?

其实在go.dev的about中说的很清楚了,只有通过proxy.golang.org下载包的时候,module才会自动同步到pkg.go.dev。

To add a package or module, simply fetch it from proxy.golang.org.

但是,实际上,proxy.golang.org 国内基本上是无法访问的,如果我们使用 goproxy.cn,也一样能够同步,我没有研究goproxy的源码,但是我和goproxy的作者确认过,goproxy的推算行为会用到 proxy.golang.org,所以使用goproxy.cn作为代理也是可行的。

我们可以随便建一个

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值