如何从Dep迁移到Go模块

Nic*_*las 9 go godeps govendor go-modules

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

我该如何迁移?

Nic*_*las 17

从Dep迁移到Go Modules非常容易。

  1. 运行go version并确保您正在使用版本11或更高版本。
  2. 将代码移到GOPATH或set之外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将您的依赖项复制到供应商文件夹中。
  2. 运行go build -mod=vendor以确保go build使用您的供应商文件夹。


ait*_*han 5

添加到@Nicholas 的答案:

是来自 golang 官方文档:

为现有项目创建 go.mod:

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

此步骤从任何现有的dep Gopkg.lock 文件或从其他九种受支持的依赖项格式中的任何一个进行转换,添加 require 语句以匹配现有配置。

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

$ go test all
Run Code Online (Sandbox Code Playgroud)