如何从 Dep 迁移到 Go 模块
How do I migrate from Dep to Go Modules
我目前正在使用 Dep 并想开始使用 Go 模块。
如何迁移?
从 Dep 迁移到 Go Modules 非常简单。
- 运行
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 通过读取 Gopkg.lock
文件从 Dep 导入了我的依赖项,还创建了一个 go.mod
文件。
如果您想保留供应商文件夹:
- 运行
go mod vendor
将您的依赖项复制到 vendor 文件夹中。
- 运行
go build -mod=vendor
以确保 go build
使用您的供应商文件夹。
添加到@Nicholas 的回答:
Here 来自官方 golang 文档:
要为现有项目创建 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 file or from any of the other nine total supported dependency formats 转换而来,添加 require 语句以匹配现有的配置。
- 构建模块。从模块的根目录执行时,./... 模式匹配当前模块中的所有包。 go build 将根据需要自动添加缺失或未转换的依赖项以满足此特定构建调用的导入:
$ go build ./...
- 按配置测试模块以确保它适用于所选版本:
$ go test ./...
(可选)运行 模块测试加上所有直接和间接依赖项的测试以检查不兼容性:
$ go test all
另一种升级到 mod规则的方法。
删除Gopkg.toml和Gopkg.lock
rm Gopkg.*
初始化 Go mod规则
GO111MODULE=on go mod init
运行 go mod 整理所有间接 mod 规则并删除未使用的 mod 规则
GO111MODULE=on go mod tidy
运行 构建以确保一切正常
go build
提示如果您遇到一些 mod 找不到的规则,请手动更新 go.mod 文件中的 mod 规则标签。
我目前正在使用 Dep 并想开始使用 Go 模块。
如何迁移?
从 Dep 迁移到 Go Modules 非常简单。
- 运行
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 通过读取 Gopkg.lock
文件从 Dep 导入了我的依赖项,还创建了一个 go.mod
文件。
如果您想保留供应商文件夹:
- 运行
go mod vendor
将您的依赖项复制到 vendor 文件夹中。 - 运行
go build -mod=vendor
以确保go build
使用您的供应商文件夹。
添加到@Nicholas 的回答:
Here 来自官方 golang 文档:
要为现有项目创建 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 file or from any of the other nine total supported dependency formats 转换而来,添加 require 语句以匹配现有的配置。
- 构建模块。从模块的根目录执行时,./... 模式匹配当前模块中的所有包。 go build 将根据需要自动添加缺失或未转换的依赖项以满足此特定构建调用的导入:
$ go build ./...
- 按配置测试模块以确保它适用于所选版本:
$ go test ./...
(可选)运行 模块测试加上所有直接和间接依赖项的测试以检查不兼容性:
$ go test all
另一种升级到 mod规则的方法。
删除Gopkg.toml和Gopkg.lock
rm Gopkg.*
初始化 Go mod规则
GO111MODULE=on go mod init
运行 go mod 整理所有间接 mod 规则并删除未使用的 mod 规则
GO111MODULE=on go mod tidy
运行 构建以确保一切正常
go build
提示如果您遇到一些 mod 找不到的规则,请手动更新 go.mod 文件中的 mod 规则标签。