我目前正在使用 Dep,想开始使用 Go 模块。
如何迁移?
从 Dep 迁移到 Go 模块非常简单。
- 运行
go version
并确保使用的是 Go 版本 1.11 或更高版本。 - 将您的代码移出 GOPATH 或设置
export GO111MODULE=on
。 go mod init [module path]
:这将从 Gopkg.lock 导入依赖项。go mod tidy
:这将删除不必要的导入,并添加间接导入。
(- 可选)删除供应商文件夹(
rm -rf vendor/
或移至废纸篓) go build
:做一个测试构建,看看它是否有效。rm -f Gopkg.lock Gopkg.toml
: 删除用于 Dep 的过时文件。
Go 通过读取 Dep 文件从 Dep 导入了我的依赖项Gopkg.lock
并创建了一个go.mod
文件。
如果要保留供应商文件夹:
- 运行
go mod vendor
以将依赖项复制到供应商文件夹中。 - 运行
go build -mod=vendor
以确保go build
使用您的供应商文件夹。
添加到@Nicholas答案中:
以下是官方的戈朗文档:
要为现有项目创建 go.mod
:- 导航到 GOPATH 外部模块源树的根目录:
$ export GO111MODULE=on # manually active module mode
$ cd $GOPATH/src/<project path> # e.g., cd $GOPATH/src/you/hello
- 创建初始模块定义并将其写入 go.mod 文件:
$ go mod init
此步骤从任何现有的 dep Gopkg.lock 文件或从其他九种总共支持的依赖项格式中的任何一种进行转换,并添加 require 语句以匹配现有配置。
- 构建模块。当从模块的根目录执行时,./...模式匹配当前模块中的所有包。Go Build 将根据需要自动添加缺失或未转换的依赖项,以满足此特定构建调用的导入:
$ go build ./...
- 按配置测试模块,以确保它适用于所选版本:
$ go test ./...
(可选)运行模块的测试以及所有直接和间接依赖项的测试以检查不兼容性:
$ go test all
升级到模块的另一种方法。
-
删除 Gopkg.toml 和 Gopkg.lock
rm Gopkg.*
-
初始化 Go 模块
GO111MODULE=on go mod init
-
运行 go mod tidy 以拉取所有间接模块并删除未使用的模块
GO111MODULE=on go mod tidy
-
运行构建以确保一切正常
go build
提示如果您遇到一些未找到的模块,请手动更新 go.mod 文件中的模块标签。