go buildin package manager.git
go mod是go語言內置的包管理工具,集成在go tool中,安裝好go就能夠使用。github
要求: go version >= 1.11golang
官方文檔: https://tip.golang.org/cmd/go...緩存
# 經過環境變量GOPROXY設置代理 export GOPROXY=https://goproxy.io # go mod功能開關,默認是auto,在gopath中不啓用 # 可設置爲on強制啓用 export GO111MODULE=on
init報錯outside gopath no import comments安全
# 方法一 手動建立go.mod文件, 寫入module xxx echo 'module xxx' > go.mod # 方法二 main包加入import聲明 package main // import "xxx"
下載依賴編輯器
同步依賴包,添加須要的,移除多餘的ide
將依賴包放入vendor工具
go mod再也不下載源碼進$GOPATH/srcui
go mod的下載目錄在$GOPATH/pkg/mod,而且是文件權限是隻讀的-r--r--r--
3d
# tag必須以v開頭 v1.2.3格式 go get -u xxx.com/pkg@2.1.0
go mod是不推薦使用vendor目錄的,而是直接使用source或cache中的包。
module mode下默認忽略vendor目錄。經過flag-mod=vendor
設置vendor模式,依賴只從頂層的vendor中查找。能夠經過環境變量GOFLAGS=-mod=vendor
來設置flag。
https://github.com/golang/go/...
goland編輯器勾選vender後會開啓vendor模式。
# go get: disabled by -mod=vendor # mod有三個取值 # mod can be '', 'readonly', or 'vendor' # 兩種賦值方式均可以 -mod='' -mod ''
讓本來依賴的 github.com/repo/pkg 包,實際使用 github.com/your-fork/pkg@v。
go mod edit -replace old[@v]=new[@v] # 若是不是replace本地包,必須帶上版本號 go mod edit -replace golang.org/x/crypto=github.com/golang/crypto@v0.0.0-20190621222207-cc06ce4a13d4
# go.mod replace golang.org/x/crypto => github.com/golang/crypto v0.0.0-20190621222207-cc06ce4a13d4 replace golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4 => github.com/golang/crypto v0.0.0-20190621222207-cc06ce4a13d4
go clean -modcache
go.mod:依賴列表和版本約束。
go.sum:記錄module文件hash值,用於安全校驗。
go mod不推薦使用vendor,不要將vendor提交到版本控制。
提交go.mod,能夠忽略go.sum,由於會根據校驗sum跨平臺可能報錯。