go mod 官方推荐包管理工具,是在 golang 1.11
中新加的特性。
如何使用 go mod
版本需要手动开启使用
go1.11
, 设置
go mod
环境变量
go
GO111MODULE=on
版本之后,作为
go1.14
默认的 包管理工具
golang
go mod 命令
命令 | 示例 | 说明 |
---|---|---|
init | initialize new module in current directory | 当前目录初始化 mod |
tidy | add missing and remove unused modules | 拉取缺少的模块,移除不用的模块 |
vendor | make vendored copy of dependencies | 将依赖复制到 vendor 下 |
download | download modules to local cache | 下载依赖包 |
graph | print module requirement graph | 打印模块依赖图 |
verify | verify dependencies have expected content | 验证依赖是否正确 |
why | explain why packages or modules are needed | 解释为什么需要依赖 |
1. 如何在项目中使用
1.1 创建一个新项目 (或非 go mod 包管理项目)
> go mod init projectName
-
文件一旦创建后,它的内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go.mod
等修改和维护go get、go build、go mod
文件。go.mod
- 如使用编辑器
, 也需要开启设置goland
Enable Go models intergration
1.2 go mod
关键字
go mod
go.mod
提供了
module
、
require
、
replace
、
exclude
四个命令
-
语句指定包的名字 (路径)module
-
语句指定的依赖项模块require
-
语句可以替换依赖项模块replace
-
语句可以忽略依赖项模块exclude
1.3 使用 go get
升级 go mod
中依赖
go get
go mod
-
将会升级到指定的版本号 versiongo get package@version
-
将会升级到最新的修订版本,如go get -u package
go get -u github.com/gin-gonic/gin
2. go mod 批量操作
2.1 查看 go.mod
中有更新的直接依赖项
go.mod
go list -u -f '{{if (and (not (or .Main .Indirect)) .Update)}}{{.Path}}{{end}}' -m all
或
2.2 批量更新他们
- 使用
go get -u $()
- 使用
xargs