【发布时间】:2019-09-03 23:40:21
【问题描述】:
我目前正在使用 Dep,并想开始使用 Go 模块。
如何迁移?
【问题讨论】:
标签: go godeps go-modules govendor
我目前正在使用 Dep,并想开始使用 Go 模块。
如何迁移?
【问题讨论】:
标签: go godeps go-modules govendor
从 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 使用您的供应商文件夹。【讨论】:
clang: error: unable to read SDK settings for '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk'
xcode-select --install
添加到@Nicholas 的答案:
Here 来自官方 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 文件或from any of the other nine total supported dependency formats 转换,添加要求语句以匹配现有配置。
$ 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 文件中的模块标签。
【讨论】: