一、創(chuàng)建一個(gè)Module
1、新建模塊文件夾(它的目錄要在 GOPATH 之外,因?yàn)槟J(rèn)情況下,GOPATH 里面是禁用 modules 支持的)
$ mkdir testmod
$ cd testmod
2、現(xiàn)在還只是一個(gè)文件夾,如果要變成module,就需要初始化(上傳到github對(duì)外給他人使用的話,需要使用此默認(rèn)格式:github.com/github昵稱/module名)
$ go mod init github.com/chenycu/testmod
- 初始化git項(xiàng)目,并在github上新建repositories,本地倉庫添加遠(yuǎn)程地址
git init
git add *
git commit -m "first commit"
git remote add origin https://github.com/chenycu/testmod.git
git push -u origin master
現(xiàn)在任何想用這個(gè)包的人都可以通過go get命令獲取,在自己的module目錄下執(zhí)行如下命令
go get github.com/chenycu/testmod
獲取到的Module源碼在GOPATH/pkg/mod/目錄下
二、發(fā)布版本控制
版本號(hào)格式為v主要版本.次要版本.修訂版本 例如:v1.0.0
設(shè)置版本號(hào)我們使用git tag命令
考慮到兼容性,module的每一個(gè)主要版本我們最好新建一個(gè)分支來存放
$ git checkout -b v1
$ git push -u origin v1
$ git tag v1.0.0
$ git push --tags
這樣我們?cè)趍aster分支中修改代碼不會(huì)影響到主要版本,master中的問題修改完畢后,合并到v1分支,設(shè)置tag為v1.0.1重新push到v1遠(yuǎn)程分支后生效。
如果需要更新主要版本,最好的做法是,再新建一個(gè)分支v2,設(shè)置tag為v2.0.0提交。
三、更新Module
我們可以在自己的Module目錄下 使用go get 來更新 module:
- 運(yùn)行
go get -u將會(huì)升級(jí)到最新的次要版本或者修訂版本(比如說,將會(huì)從 1.0.0 版本,升級(jí)到——舉個(gè)例子——1.0.1 版本,或者 1.1.0 版本,如果 1.1.0 版本存在的話) - 運(yùn)行
go get -u=patch將會(huì)升級(jí)到最新的修訂版本(比如說,將會(huì)升級(jí)到 1.0.1 版本,但不會(huì)升級(jí)到 1.1.0 版本) - 運(yùn)行
go get package@version將會(huì)升級(jí)到指定的版本號(hào)(比如說,github.com/chenycu/testmod@v1.0.1)
四、下載Module
由于被墻的關(guān)系,下載module比較麻煩,但是go 1.12后有一個(gè)環(huán)境變量GOPROXY,我們可以直接在module目錄下執(zhí)行如下命令設(shè)置GOPROXY
set GOPROXY=https://goproxy.io
設(shè)完就可以下載被墻的包了。