使用 Go Modules(模块)进行依赖项迁移

lazytooo ·
aofei
Try to glue everything together.
这里有个注意事项需要告诉大家。 当你的项目从 dep 或者 glide 等依赖管理工具,甚至从原有的 vendor 目录迁移到 modules 时,所执行的 `go mod init` 是会从类似 dep 的 Gopkg.lock 中读取你原有的依赖信息(比如 import path 和版本),并将其作为 go.mod 的生成依据的。注意在上述过程中 go 是会忽略你的 GOPROXY 设置的,换句话说上述过程中是没有模块代理参与进来的。 比如,在迁移过程中你执行了 `GOPROXY=https://goproxy.cn go mod init`,且你的项目原有依赖中包含了 `golang.org/x/...` 等在国内无法访问到的模块,如果此时你没有做任何其他代理,那么此过程将导致初始化失败,因为它是不会走 https://goproxy.cn 的。 这是 go 的一个 bug,我已经提 issue 和 CL 了( https://github.com/golang/go/issues/33767 ),但 Go team 近期没有 merge 计划。所以大家需要注意如果有这种需求时一定要使用其他代理工具,否则掉进坑里挣扎太久会浪费时间的。
#1
更多评论
polaris
社区,需要你我一同完善!
<a href="/user/aofei" title="@aofei">@aofei</a> 棒 goproxy 推荐 aofei 开发的 https://goproxy.cn
#2