Go模組是Go語言的依賴包管理工具。
Go模組的使用
1、Go1.11及以後版本才能使用。
2、Go1.11需要設定環境變數 GO111MODULE 為 on(新特性開關,按照Go語言慣例,mod首次在go1.11版本中使用,go1.12及以後版本這個設定應該不會用了)。
mod是模組英文modules的簡寫。
列舉一些常用的命令列:
go help mod
查看協助。
go mod init <項目模組名稱>
初始化模組,會在項目根目錄下產生 go.mod
檔案。參數<項目模組名稱>
是非必寫的,但如果你的項目還沒有代碼編寫,這個參數能快速初始化模組。如果之前使用其它依賴管理工具(比如dep,glide等),mod會自動接管原來依賴關係。
go mod tidy
根據go.mod檔案來處理依賴關係。
go mod vendor
將依賴包複製到項目下的 vendor 目錄。建議一些使用了被牆包的話可以這麼處理,方便使用者快速使用命令go build -mod=vendor
編譯。
go list -m all
顯示依賴關係。
go mod download <path@version>
下載依賴。參數<path@version>
是非必寫的,path是包的路徑,version是包的版本。
- 其它命令可以通過
go help mod
來查看。
另外:
go.mod檔案是文字檔,是可以自己手動編輯的。
Go模組版本控制的下載檔案及資訊會儲存到GOPATH的pkg/mod檔案夾裡。
使用了Go模組,源碼不一定要在GOPATH中進行。
使用樣本
go.mod檔案
module github.com/wuyumin/easydocrequire ( github.com/BurntSushi/toml v0.3.0 github.com/mostafah/fsync v0.0.0-20151120150823-6c37e2827238 github.com/russross/blackfriday v1.5.1)
Git建議
go.mod檔案必須要提交到git倉庫,但go.sum檔案可以不用提交到git倉庫(git忽略檔案.gitignore中設定一下)。
參考資料
- 語義化版本(中文) https://semver.org/lang/zh-CN/
- Go模組官方文檔(英文) https://golang.google.cn/cmd/...
歡迎修正
此篇文章最新的更改都會在GitHub上進行。
GitHub上的原文連結
https://github.com/wuyumin/tu...
歡迎在GitHub上star本項目或通過Issues提供修正建議。