这一次,彻底掌握go mod
1. 版本号规范
go mod 对版本号的定义是有一定要求的,它要求的格式为 v<major>.<minor>.<patch>,如果 major 版本号大于 1 时,其版本号还需要体现在 Module 名字中。比如 我的项目 github.com/pibigstar/go-demo,如果我的版本号增长到 v2.x.x 时,我的 Module 名字也需要相应的改变为: github.com/pibigstar/go-demo/v2, 有人可能就要问了,我不改可以吗? 可以的!但是 go mod 会在你依赖的后面打一个 +incompatible 标志
2. 伪版本
我们将项目上传到 github 后,如果不打 tag,或 tag 不符合 v<major>.<minor>.<patch> 这个格式,那么当我们用 go mod 去拉这个项目的时候,就会将 commitId 作为版本号,它的格式大概是 vx.y.z-yyyymmddhhmmss-abcdef格式
虽然不太好看,但是这个玩意其实挺有用的,省的你每次都需要打 tag 了,这里介绍一个直接拉取小技巧
require (
github.com/pibigstar/go-demo master
)
我们直接在后面写 master 分支,这样它就会拉取 master 分支最后一次提交的 commitId 作为版本号
3. indirect 标志
我们用 go mod 的时候应该经常会看到 有的依赖后面会打了一个 // indirect 的标识位