Go Module 使用
使用方式
推荐阅读这边文章,讲得比较清楚和使用: go module 基本使用 - ChnMig - 博客园
# 初始化Go Module
cd xxx/xxx/test/
go mod init test(test为项目名,比如说gitlab.sz.sensetime.com/viper/infra/infra-ips-operator)
# tidy会检测该文件夹目录下所有引入的依赖,写入 go.mod 文件, 写入后你会发现 go.mod 文件有所变动
go mod tidy
# 我们需要将依赖下载至本地,而不是使用 go get
go mod download
# 导入依赖,执行此命令,会将刚才下载至 GOPATH 下的依赖转移至该项目根目录下的 vendor(自动新建) 文件夹下
go mod vendor
# 其他命令
go mod edit # 手动修改依赖文件
go mod graph # 打印依赖图
go mod verify # 校验依赖
注意事项
- 要注意的是, 在项目管理中,如使用git,请将 vendor 文件夹放入白名单,不然项目中带上包体积会很大. git设置白名单方式为在git托管的项目根目录新建 .gitignore 文件
- go.mod和go.sum文件
-
- go.mod文件
-
-
- 只标识了项目名和go的版本,这是正常的,因为只是初始化了
-
-
- go.sum
-
-
- go.sum的核心是基于go.mod下载的文件进行哈希并记录下来,避免有黑客篡改依赖包
- 考虑到下载的依赖包有可能是被黑客恶意篡改的,以及缓存在本地的依赖包也有被篡改的可能,单单一个go.mod文件并不能保证一致性构建。
- 是一个构建状态跟踪文件
-
参考资料
如何使用GoProxy
Goproxy.cn 完全实现了 GOPROXY 协议。并且它是一个由中国备受信赖的云服务提供商七牛云支持的非营利性项目。我们的目标是为中国的 Gopher 们提供一个免费的、可靠的、持续在线的且经过 CDN 在全球范围内加速的模块代理。请在 status.goproxy.cn 订阅我们的有关系统性能的实时和历史数据。
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
参考 goproxy.cn/README.zh-CN.md at master · goproxy/goproxy.cn
如何导入本地包?
Go官方并不推荐这种用法。import本地的module需要借助replace指令来实现。