如何从Dep迁移到Go模块

时间:2019-04-13 10:49:15

标签: go godeps go-modules govendor

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

如何迁移?

3 个答案:

答案 0 :(得分:6)

从Dep迁移到Go Modules非常简单。

  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将您的依赖项复制到供应商文件夹中。
  2. 运行go build -mod=vendor以确保go build使用您的供应商文件夹。

答案 1 :(得分:0)

要添加到@Nicholas答案中,

Here来自官方的golang文档:

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

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

此步骤从任何现有的dep Gopkg.lock文件或from any of the other nine total supported dependency formats进行转换,并添加require语句以匹配现有配置。

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

$ go test all

答案 2 :(得分:0)

另一种升级模块的方法。

  • 删除Gopkg.toml和Gopkg.lock

    rm Gopkg.*

  • 初始化Go模块

    GO111MODULE=on go mod init

  • 运行go mod tidy以拉出所有间接模块并删除未使用的模块

    GO111MODULE=on go mod tidy

  • 运行构建以确保一切正常

    go build

如果遇到一些找不到的模块,请提示,然后手动更新go.mod文件中的modules标记。