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跨平台可能报错。