之前有知道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. 選擇“變數名”輸入框並輸入“GOPROXY”
7. 選擇“變數值”輸入框並輸入“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 //解釋為什麼需要此模組
自己也是剛開始使用golang的modules去管理專案中的包,如有錯誤,歡迎指正交流。
本作品採用《CC 協議》,轉載必須註明作者和本文連結