Go Modules模式
(1)go mod 命令
命令 | 作用 |
---|---|
go mod init | 生成 go.mod 文件 / 在当前文件夹下初始化一个新的 go.mod 文件 |
go mod download | 下载 go.mod 文件中指明的所有依赖 / 下载依赖的module到本地cache |
go mod tidy | 整理现有的依赖 / 增加失去的 module,去掉未用的module |
go mod graph | 查看现有的依赖结构 |
go mod edit | 编辑 go.mod 文件 |
go mod vendor | 导出项目所有的依赖到 vendor 目录 / 将依赖复制到vendor下 |
go mod verify | 校验一个模块是否被篡改过 / 校验依赖,检查下载到第三方库有没有本地修改,如果有修改,则返回非0,否则验证成功。 |
go mod why | 查看为什么需要依赖某模块 / 解释为什么需要需要依赖 |
(2)go mod 环境变量
可以通过 go env
命令来进行查看
GO111MODULE="on"
GOPROXY="https://goproxy.cn,direct"
GOROOT="..."
GOSUMDB="sum.golang.org"
GOTMPDIR=""
...
GO111MODULE
Go 语言提供了GO111MODULE这个环境变量来作为 Go modules 的开关,其允许设置以下参数:
- auto:只要项目包含了 go.mod 文件的话启用 Go modules。
- on:启用 Go modules,推荐设置。
- off:禁用 Go modules,不推荐。
可以通过 go env -w GO111MODULE=on
来设置。
GOPROXY
这个环境变量主要是用于设置 Go 模块代理(Go module proxy),其作用是用于使 Go 在后续拉取模块版本时直接通过镜像站点来快速拉取。
- GOPROXY 的默认值是:https://proxy.golang.org,direct
proxy.golang.org
国内访问不了,需要设置国内的代理- 阿里云:https://mirrors.aliyun.com/goproxy/
- 七牛云:https://goproxy.cn,direct
go env -w GOPROXY=https://proxy.golang.org,direct
direct的含义:指示符。指示go回源到模块版本的原地址去拉取。
比如一个模块 “github.com/xxx/json”,首先会