Gomod机制

226 阅读1分钟

1、环境变量 GO111MODULE

go 通过环境变量 GO111MODULE 的 3 个值 off、on、auto 来决定是否使用 go mod. 这三个值影响分别如下:

  • GO111MODULE=off:关闭 go modules 功能,在编译的时候仍旧在 $GOPATH/src 或者 vendor 目录中寻找依赖. 这种包管理模式为 "GOPATH 模式".
  • GO111MODULE=on:开启 go modules 功能,在编译时不会在 GOPATH/src中寻找依赖.将在项目根目录生成go.mod文件。同时,依赖包不再存放在GOPATH/src 中寻找依赖. 将在项目根目录生成 go.mod 文件。同时,依赖包不再存放在 GOPATH/src 目录,而是存放在 $GOPATH/pkg/mod 目录,多个项目可以共享缓存的 modules。
  • GO111MODULE=auto:默认值,在 go v1.13 及之后版本中,如果工程目录下包含 go.mod 文件或者位于包含 go.mod 文件的目录下,则开启 go modules 功能. 在 go v1.11 中 auto 值需要工程在 GOPATH/src 之外的目录中才会开启 go mod,以确保兼容性.

2、go mod命令行

// 常用命令

go mod init // 初始化 go.mod,将开启 mod 使用

go mod tidy // 添加或者删除 modules,取决于依赖的引用

go mod vendor // 复制依赖到 vendor 目录下

// 其它命令

go mod download // 下载 module 到本地

go mod edit // 编辑 go.mod

go mod graph // 打印 modules 依赖图

go mod verify // 验证依赖

go mod why // 解释依赖使用