「Go Tips」go mod 包管理
# 简单收集下 Go 包管理中 go mod 常用命令备查
# 确保 GO111MODULE 不为 off。
go env
GO111MODULE=off: 不使用 modules 功能。
GO111MODULE=on: 使用 modules 功能,不会去 GOPATH 下面查找依赖包。
GO111MODULE=auto: Golang 自己检测是不是使用 modules 功能。(默认)
# 新项目初始化
go mod init <project_name>
# 拉取模块包
go mod download # 只下载依赖包
go mod tidy # 拉取必须模块,移除不用的模块
# 依赖包收集到项目目录方便编辑器识别
go mod vendor # 会在项目根目录生成 vendor 目录
# 拉取某个报的特定版本,会自动添加到 go.mod 文件中
go get package@version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# go.mod 关键字
module:用于定义当前项目的模块路径
go:用于设置Go 版本信息
require:用于设置一个特定的模块版本
exclude:用于从使用中排除一个特定的模块版本
replace:用于将一个模块版本替换为另一个模块版本
indirect 间接依赖
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# go mod 存储问题
GOPATH模式下,依赖包存储在$GOPATH/src
,该目录下只保存特定依赖包的一个版本。
GOMODULE模式下,依赖包存储在$GOPATH/pkg/mod
,该目录中可以存储特定依赖包的多个版本(go get 指定下载多个版本)
$GOPATH/pkg/mod
目录下有个cache目录,它用来存储依赖包的缓存,简单说,go命令每次下载新的依赖包都会在该cache目录中保存一份
# go 模块查找顺序
gomodule 模式下:
vendor > $GOPATH/pkg/mod > $GOPATH
1
gopath 模式下:
$GOPATH
1
# 一些可参考的文档
上次更新: 2023/03/28, 16:27:19