小滕的博客

小滕的技术点滴

将项目从dep迁移到Go Modules

4 months ago · 1 MIN READ

Go Modules 是 Go 包管理的未来。它们可以在 Go 1.11版本中使用了,它将在Go 1.13 成为默认特性。

这篇文章中我不会具体阐述包管理的工作原理。我只是提供一个将现有使用Dep的项目迁移到Go module的方法。

项目Demo: github.com/kounta/luigi

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

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

只输出了两行:

go: creating new go.mod: module github.com/kounta/luigi
go: copying requirements from Gopkg.lock

非常简单。这样我们就完成了所有的依赖从 dep 迁移到 Go module啦。现在,你可以看到一个新的文件 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.toml.lock 文件一样,我们需要生成 go.sumfile 。只需要运行:

go build

现在,你可以移除 Gopkg.lockGopkg.toml 并将 go.modgo.sum commit 吧。

Travis CI

如果您使用 Travis CI 那么你需要配置下面的内容启用Go module直到go 1.13版本它成为默认模块:

GO111MODULE=on

私有仓库

如果您导入一个私有仓库,那么可能会出现下面的错误:

invalid module version “v6.5.0”: unknown revision v6.5.0

这个错误提示不准确。它真正想说的,无法识别这个 URL (在这里是指的是 github.com)。因为Github无法确认它是否存在。

可以这样解决:

  • 1.登录你的 Github 账户,然后 Settings > 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"

原文地址:https://medium.com/@elliotchance/migrating-projects-from-dep-to-go-modules-cc6bde71610b

···

xiao teng



备案号:皖ICP备14012032号-5