一、创建一个Module
1、新建模块文件夹(它的目录要在 GOPATH 之外,因为默认情况下,GOPATH 里面是禁用 modules 支持的)
$ mkdir testmod
$ cd testmod
2、现在还只是一个文件夹,如果要变成module,就需要初始化(上传到github对外给他人使用的话,需要使用此默认格式:github.com/github昵称/module名)
$ go mod init github.com/chenycu/testmod
- 初始化git项目,并在github上新建repositories,本地仓库添加远程地址
git init
git add *
git commit -m "first commit"
git remote add origin https://github.com/chenycu/testmod.git
git push -u origin master
现在任何想用这个包的人都可以通过go get
命令获取,在自己的module目录下执行如下命令
go get github.com/chenycu/testmod
获取到的Module源码在GOPATH/pkg/mod/目录下
二、发布版本控制
版本号格式为v主要版本.次要版本.修订版本
例如:v1.0.0
设置版本号我们使用git tag
命令
考虑到兼容性,module的每一个主要版本我们最好新建一个分支来存放
$ git checkout -b v1
$ git push -u origin v1
$ git tag v1.0.0
$ git push --tags
这样我们在master分支中修改代码不会影响到主要版本,master中的问题修改完毕后,合并到v1分支,设置tag为v1.0.1重新push到v1远程分支后生效。
如果需要更新主要版本,最好的做法是,再新建一个分支v2,设置tag为v2.0.0提交。
三、更新Module
我们可以在自己的Module目录下 使用go get
来更新 module:
- 运行
go get -u
将会升级到最新的次要版本或者修订版本(比如说,将会从 1.0.0 版本,升级到——举个例子——1.0.1 版本,或者 1.1.0 版本,如果 1.1.0 版本存在的话) - 运行
go get -u=patch
将会升级到最新的修订版本(比如说,将会升级到 1.0.1 版本,但不会升级到 1.1.0 版本) - 运行
go get package@version
将会升级到指定的版本号(比如说,github.com/chenycu/testmod@v1.0.1
)
四、下载Module
由于被墙的关系,下载module比较麻烦,但是go 1.12后有一个环境变量GOPROXY
,我们可以直接在module目录下执行如下命令设置GOPROXY
set GOPROXY=https://goproxy.io
设完就可以下载被墙的包了。
网友评论