【问题标题】:How do I migrate from Dep to Go Modules如何从 Dep 迁移到 Go 模块
【发布时间】:2019-09-03 23:40:21
【问题描述】:

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

如何迁移?

【问题讨论】:

    标签: go godeps go-modules govendor


    【解决方案1】:

    从 Dep 迁移到 Go 模块非常容易。

    1. 运行 go version 并确保您使用的是 Go 版本 1.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 使用您的供应商文件夹。

    【讨论】:

    • 在我尝试构建时运行这些后,我收到此错误clang: error: unable to read SDK settings for '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk'
    • @Surya 尝试更新您的 CommandLineTools:xcode-select --install
    • 是的,也这样做了 xcode-select --switch /Library/Developer/CommandLineTools/ 仍然没有运气@Nicholas
    • 第 5 步要小心。如果你的仓库有供应商文件夹,它很可能包含一些其他情况下不可用的东西
    【解决方案2】:

    添加到@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 转换,添加要求语句以匹配现有配置。

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

    $ go test all
    

    【讨论】:

      【解决方案3】:

      升级到模块的另一种方式。

      • 删除 Gopkg.toml 和 Gopkg.lock

        rm Gopkg.*

      • 初始化 Go 模块

        GO111MODULE=on go mod init

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

        GO111MODULE=on go mod tidy

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

        go build

      提示如果您遇到找不到模块的情况,请手动更新 go.mod 文件中的模块标签。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-13
        • 2020-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多