自从 Go v1.11 版本之后 Go modules 成了官方的包管理方式,与此同时还有一个 Go module proxy ,它到底是个什么东西?顾名思义,其实就是个代理,所有的模块和依赖库都可以从这个代理上下载。
Go module proxy 到底有何特别之处?我们为什么应该使用它?
使用 Go modules ,如果你添加了新的依赖项或者构建了自己的模块,那么它将会基于 go.mod 文件下载( go get )所有的依赖项并且缓存起来。你可以使用 vendor 目录(将依赖项置于此目录下)以绕过缓存,同时通过 -mod=vendor 标记就可以指定使用 vendor 目录下的依赖项进行构建。然而这么做并不好。
01
—
使用 vendor 目录有哪些问题:
那么不使用 vendor 目录又会如何呢?这时我们又将面临如下问题:
如何解决上述这一系列的问题?答案是使用 Go module proxy 。
02
—
默认情况下,go 命令直接从 VCS 下载模块。环境变量 GOPROXY 指定使用 Go module proxy 以进一步控制下载源。
通过设置 GOPROXY ,你将会解决上述的所有问题:
综上所述,你绝对应该使用 Go module proxy 。
03
—
如何使用 Go module proxy ?
你需要设置环境变量 GOPROXY :
1、如果 GOPROXY 未设置、为空、或者设置为 direct ,则 go get 将直连 VCS (如 github.com):
GOPROXY=""
GOPROXY=direct
如果设置为 off ,则表示不允许使用网络:
GOPROXY=off
2、你可以使用任意一个公共的代理 :
GOPROXY=https://proxy.golang.org # 谷歌官方,大陆地区被墙了
GOPROXY=https://goproxy.io # 个人开源
GOPROXY=https://goproxy.cn # 大陆地区建议使用,七牛云托管
3、你可以基于开源方案实现本地部署:
通过这种方式你可以构建一个公司的内部代理,与外网隔离。
4、你可以购买商业产品:
5、你可以使用 file:/// URL ,文件系统路径也是可以直接使用的。
04
—
Go v1.13 版本的相关更改:
05
—
相关资料:
https://github.com/golang/go/wiki/Modules
https://proxy.golang.org/
本文分享自 Node Python Go全栈开发 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有