包管理工具已是编程语言的必备的工具,用于解决项目中复杂的依赖关系,提供包的版本控制、安装、更新等工具。Java
中有 Maven
,Python
中的 pip
,还有 PHP
中 composer
等,那么 Go 目前已经有非常成熟的包管理工具:go mod。
初始化
在一个还没有使用go mod
的项目中,需要使用go mod init
初始化。
go mod init example.com/group/demo
上面命令初始化了一个包名为example.com/group/demo
的,产生了go.mod
文件:
module example.com/group/demo
go 1.23.4
添加依赖
初始化go mod
之后,可以使用go get
添加项目中将要用到的依赖包。
go get github.com/spf13/cobra
上述命令添加了github.com/spf13/cobra
包,也可以指定版本,例如:go get github.com/spf13/cobra@v1.1.1
,如果要安装最新版也可以使用 latest
,例如:go get github.com/spf13/cobra@latest
。
如果要更新依赖可以加入-u
参数:
go get -u github.com/spf13/cobra
清理依赖
go mod tidy
,用于添加丢失的依赖和移除无用的依赖。它会自动发现项目中使用的依赖但没有添加到go.mod
中的依赖,也会把项目中没有使用的依赖从go.mod
中移除,并且还会更新go.sum
,保证所有依赖的校验的完整性。
- 移除未使用的依赖项
- 添加缺失的依赖项
- 更新 go.sum 文件
其他命令
使用go help mod
可以列出所有 go mod
命令。
go help mod
- download 下载所有依赖到缓存
- edit 修改 go.mod 从工具和脚本
- graph 打印依赖关系图
- init 初始化mod在当前目录
- tidy 添加丢失的和移除无用的依赖模块
- vendor 将依赖存放在使用vendor目录
- verify 校验依赖的哈希值
- why 解释为什么依赖某个模块
最后
go mod
是 Go 语言一个强大的包管理工具,从 Go 1.11 版本开始引入,解决了版本依赖的诸多问题,现已经是 Go 项目必备的包管理工具。开发者可以更高效、更便捷的管理项目的依赖,提供项目的可维护性和稳定性,熟悉go mod
的用法也是 Go 开发者非常中的技能。