I'm currently using Dep and would like to start using Go modules.
How do I migrate?
I'm currently using Dep and would like to start using Go modules.
How do I migrate?
从 Dep 迁移到 Go 模块非常容易。
go version
并确保您使用的是 Go 版本 1.11 或更高版本。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 通过读取Gopkg.lock
文件从 Dep 导入了我的依赖项,并创建了一个go.mod
文件。
如果您想保留您的供应商文件夹:
go mod vendor
以将您的依赖项复制到供应商文件夹中。go build -mod=vendor
以确保go build
使用您的供应商文件夹。要添加到@Nicholas 的答案:
这是来自官方的golang文档:
为现有项目创建 go.mod:
$ export GO111MODULE=on # manually active module mode
$ cd $GOPATH/src/<project path> # e.g., cd $GOPATH/src/you/hello
$ go mod init
此步骤从任何现有的dep Gopkg.lock 文件或从其他九种受支持的依赖格式中的任何一种转换,添加 require 语句以匹配现有配置。
$ 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 文件中的模块标签。