「译」把项目从 Dep 迁移到 Go Modules

正小歪的博客 · · 1511 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

原文地址

Go Modules 是 Go 管理的未来方向。已经在 Go 1.11 中可以试用,将会是 Go 1.13 中的默认行为。

我不会在这篇文章中描述包管理工具的工作流程。我会主要讨论的是如何把现有的项目中 dep 迁移的 Go Module。

在我的实例中,我会使用一个私有的仓库地址 github.com/kuinta/luigi ,它是使用 Go 语言编写,在好几个项目中被使用,是一个绝佳的候选人。

首先,我们需要初始化 Module:

cd github.com/kounta/luigi
go mod init github.com/kounta/luigi

完成后只会有两行输出:

go: create now go.mod: module github.com/kounta/luigi
go: copying requirments from Gopkg.lock

是的,这样就对了。这样就已经完成从 dep 迁移了。

现在你只要看一眼新生成的文件 go.mod 就像下面这样:

module github.com/kounta/luigi

go 1.12

require (
   github.com/elliotchance/tf v1.5.0
   github.com/gin-gonic/gin v1.3.0
   github.com/go-redis/redis v6.15.0+incompatible
)

其实在 require 中还有更多的内容,为了保持整洁我把他们删除了。

就像 dep 区分 tomllock 文件一样。我们需要生成 go.sum 文件,只要执行:

go build

现在你可以删除 Gopkg.lockGopkg.toml 文件,然后提交 go.modgo.sum 文件。

Travis CI

如果你使用 Travis CI,你需要在 Go 1.13 之前通过设置环境变量来启用该功能。

GO111MODULE=on

私有仓库

如果你要导入私有仓库,你可以会发现这个错误:

invalid module version "v6.5.0": unknown revision v6.5.0

这是一个误导。它真正想说的,无法识别这个 URL (在这里是指的是 github.com)。无法找到这个仓库是因为 Github 没有权限确认仓库的存在。

修复这个问题也很简单:

  1. 登录 Github 账号,然后到 Setting -> Personal access tokens
  2. 创建一个有访问私有仓库权限的 token
  3. 然后执行
export GITHUB_TOKEN=xxx

git config --global url."https://${GITHUB_TOKEN}:x-oauth-basic@github.com/kounta".insteadOf "https://github.com/kounta"

有疑问加站长微信联系(非本文作者)

本文来自:正小歪的博客

感谢作者:正小歪的博客

查看原文:「译」把项目从 Dep 迁移到 Go Modules

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1511 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传
X
登录和大家一起探讨吧