Post

Go mod

Go mod

基础

使用 go mod 管理依赖是官方推荐的方式,可以方便地管理代码的版本和依赖。

下面是一些常见的 go mod 使用方法:

1. 初始化项目

在项目的根目录下,执行以下命令初始化 go mod

1
go mod init <module-name>

其中 <module-name> 是项目的模块名,通常是一个域名的反转加上项目名,例如 github.com/example-project

2. 添加依赖

假设你要添加一个名为 example-dependency 的依赖,你可以执行以下命令:

1
go get example-dependency

这会将 example-dependency 下载到本地,并自动更新 go.mod 文件中的依赖信息。

3. 升级依赖

你可以使用以下命令来升级项目的依赖:

1
go get -u

这会将所有依赖升级到最新版本。

4. 构建项目

使用 go build 或者 go run 命令来构建或运行项目,go mod 会自动下载依赖并构建项目。

5. 清理依赖

如果你想要清理掉不再使用的依赖,可以使用以下命令:

1
go mod tidy

这会自动删除不再使用的依赖。

除了上述基本用法之外,go mod 还支持许多其他的功能,例如指定依赖的版本、使用私有仓库等。熟悉 go mod 的使用可以提高项目的开发效率和代码的可维护性。

高级使用

1. 指定依赖版本

可以使用以下命令指定依赖的版本:

1
go get example-dependency@v1.2.3

其中 v1.2.3 是依赖的具体版本。

2. 使用代理下载依赖

如果因为某些原因无法直接从官方源下载依赖,可以使用代理来下载依赖。例如,使用 goproxy.io 作为代理:

1
go env -w GOPROXY=https://goproxy.io,direct

这会将代理地址设置为 https://goproxy.io,如果代理无法使用,会直接从官方源下载。

3. 使用私有仓库

如果依赖不在公共仓库中,可以使用私有仓库来下载依赖。例如,使用 gitlab.com 作为私有仓库:

1
go env -w GOPRIVATE=gitlab.com

这会将 gitlab.com 设置为私有仓库,go mod 会从该仓库下载依赖。

4. 使用本地包

如果你正在开发一个本地的包或者库,可以使用以下命令将其添加到 go.mod 文件中:

1
go mod edit -replace example-package=../example-package

其中 example-package 是本地包的名称,../example-package 是本地包的路径。

5. 禁止自动更新依赖

如果你想要禁止自动更新依赖,可以在 go.mod 文件中添加以下内容:

1
2
3
4
go 1.16
...
go 1.17
...

这会锁定 Golang 的版本,禁止自动更新。

go.mod 使用

1
2
3
4
5
6
7
8
9
10
11
12
13
replace (
	source latest => target latest
)

require (
	dependency latest
)

retract (
  v0.1.0
  v0.2.0
)

  • requirere:记录了项目依赖的库和版本号
  • replace:用于指定模块的替换品(通常是本地路径),例如 replace example.com/old => example.com/new 表示使用本地路径 example.com/new 替换所有引用 example.com/old 的模块
  • retract:新特性给予了 Go modules 软撤回版本的一个方法,能够把问题更直观的反馈到开发者的手中
  • exclude:用于排除特定模块版本的依赖项,例如 exclude example.com/old v1.0.0 表示排除版本为 v1.0.0example.com/old 依赖项

用于指定模块的替换品(通常是本地路径),例如 replace example.com/old => example.com/new 表示使用本地路径 example.com/new 替换所有引用 example.com/old 的模块。

This post is licensed under CC BY 4.0 by the author.