如何从Dep迁移到Go模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Dep迁移到Go模块相关的知识,希望对你有一定的参考价值。

我目前正在使用Dep,并希望开始使用Go模块。

我如何迁移?

答案

从Dep迁移到Go模块非常简单。

  1. 运行go version并确保您使用的是版本11或更高版本。
  2. 将您的代码移到GOPATH之外或设置export GO111MODULE=on
  3. go mod init [module path]:这将从Gopkg.lock导入依赖项。
  4. go mod tidy:这将删除不必要的导入,并添加间接导入。
  5. rm -rf vendor/:删除供应商文件夹的可选步骤。
  6. go build:做一个测试构建,看它是否有效。
  7. rm -f Gopkg.lock Gopkg.toml:删除用于Dep的过时文件。

Go通过读取Gopkg.lock文件从Dep导入了我的依赖项,并创建了一个go.mod文件。

如果要保留供应商文件夹:

  1. 运行go mod vendor将依赖项复制到vendor文件夹中。
  2. 运行go build -mod=vendor以确保go build使用您的供应商文件夹。
另一答案

要添加到@Nicholas答案:

qazxsw poi来自官方golang文档:

要为现有项目创建go.mod:

  1. 导航到GOPATH之外的模块源树的根目录:
Here
  1. 创建初始模块定义并将其写入go.mod文件:
$ export GO111MODULE=on                         # manually active module mode
$ cd $GOPATH/src/<project path>                 # e.g., cd $GOPATH/src/you/hello

此步骤从任何现有的$ go mod init Gopkg.lock文件或dep转换,添加require语句以匹配现有配置。

  1. 构建模块。从模块的根目录执行时,。/ ...模式匹配当前模块中的所有包。 go build将根据需要自动添加缺失或未转换的依赖项,以满足此特定构建调用的导入:
from any of the other nine total supported dependency formats
  1. 按配置测试模块,以确保它适用于所选版本:
$ go build ./...
  1. (可选)运行模块的测试以及所有直接和间接依赖项的测试以检查不兼容性:
$ go test ./...

以上是关于如何从Dep迁移到Go模块的主要内容,如果未能解决你的问题,请参考以下文章

Go语言入门——dep入门

如何将字符串数据从活动发送到片段?

从 Python 2 迁移到 Go:虽然代码量多,但太香了

如何有条件地将 C 代码片段编译到我的 Perl 模块?

从 Scala 迁移到 Go,永不回头

如何从普通实体迁移到自追踪实体? [关闭]