go modules 初體驗

已下線發表於2019-12-11

之前有知道dep,vendor,glide等go的包管理方案,但沒怎麼用起來,modules是官方推出,看勢頭在後面的版本中也會持續改進,值得嘗試。

modules

modules在go的1.11版本中加入,並在Go 1.13中對模組進行了重大改進和更改。

開啟模組

1.13版本前請務必開啟模組

export GO111MODULE=auto

初始化

在你的專案目錄中執行:

go mod init 13sai/game

會生成go.mod

module 13sai/game

go 1.12

然後你可以盡情編寫你的專案程式碼,在你每次go get的時候,modules也會將你的安裝的package加入go.mod

module 13sai/game

go 1.12

require github.com/gin-gonic/gin v1.5.0 // indirect

當然,你也可以像我一樣,先去寫程式碼,不去初始化modules,寫完程式碼之後,初始化,然後執行:

go run main.go

go mod會自行寫入你專案程式碼中的包。

Goproxy 中國

當然,如果你沒有翻牆,也沒有使用國內映象,極有可能很多包都下載失敗,這時候你可以使用
Goproxy 中國

使用方法如下:

Go 1.13 及以上(推薦)
開啟你的終端並執行:

$ go env -w GOPROXY=https://goproxy.cn,direct

完成。

macOS 或 Linux
開啟你的終端並執行:

$ export GOPROXY=https://goproxy.cn

或者

$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile && source ~/.profile

完成。

Windows
開啟你的 PowerShell 並執行:

C:\> $env:GOPROXY = "https://goproxy.cn"

或者

1. 開啟“開始”並搜尋“env”
2. 選擇“編輯系統環境變數”
3. 點選“環境變數…”按鈕
4. 在“<你的使用者名稱> 的使用者變數”章節下(上半部分)
5. 點選“新建…”按鈕
6. 選擇“變數名”輸入框並輸入“GOPROXY7. 選擇“變數值”輸入框並輸入“https://goproxy.cn”
8. 點選“確定”按鈕

完成。

本地包處理

本地包使用相對路徑引入時,在使用go mod會有問題,這時可以使用這樣的方式引入(local.com/13sai/game),可自行DIY。

然後執行:

$ go mod edit -require=local.com/13sai/game@v1.0.0
$ go mod edit -replace=local.com/13sai/game@v1.0.0=$PWD

vendor備份

go mod vendor

可以將modules下載到本地vendor目錄,其中也包含上面的本地包。

其他

go mod tidy //整理模組(拉取缺少的模組,移除不用的模組)
go mod download//下載依賴包到本地快取
go mod graph //列印現有依賴結構
go mod verify //校驗依賴
go mod why //解釋為什麼需要此模組

Modules的wiki

自己也是剛開始使用golang的modules去管理專案中的包,如有錯誤,歡迎指正交流。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
分享開發知識,歡迎交流。公眾號:開源到