go - 如何自动将依赖包添加到 go.mod

标签 go go-modules

我修改了 existing github project有几十个第三方进口包,但我保持基本结构不变,就像这样:

.
├── config
│   ├── config.json
│   └── mysql.sql
├── gowebapp.go
├── LICENSE
├── README.md
├── static
├── template
│   ├── about
│   │   └── about.tmpl
│   ├── base.tmpl
└── vendor
    └── app
        ├── controller
        │   ├── about.go
        │   ├── error.go
        │   ├── index.go
        │   ├── login.go
        │   ├── notepad.go
        │   ├── register.go
        │   └── static.go
        ├── model
        │   ├── model.go
        │   ├── note.go
        │   └── user.go
        ├── route
        │   ├── middleware
        │   │   ├── acl
        │   │   │   └── acl.go
        │   │   ├── httprouterwrapper
        │   │   │   └── httprouterwrapper.go
        │   │   ├── logrequest
        │   │   │   └── logrequest.go
        │   │   └── pprofhandler
        │   │       └── pprofhandler.go
        │   └── route.go
        └── shared
            ├── database
            │   └── database.go
            ├── email
            │   └── email.go
            ├── jsonconfig
            │   └── jsonconfig.go
            ├── passhash
            │   ├── passhash.go
            │   └── passhash_test.go
            ├── recaptcha
            │   └── recaptcha.go
            ├── server
            │   └── server.go
            ├── session
            │   └── session.go
            └── view
                ├── plugin
                │   ├── noescape.go
                │   ├── prettytime.go
                │   └── taghelper.go
                └── view.go

现在我想使用 go modules 使项目可移植。

main.go 导入如下:
    package main

    import (
    "encoding/json"
    "log"
    "os"
    "runtime"

    "app/route"
    "app/shared/database"
    "app/shared/email"
    "app/shared/jsonconfig"
    "app/shared/recaptcha"
    "app/shared/server"
    "app/shared/session"
    "app/shared/view"
    "app/shared/view/plugin"
)

如您所见,代码大多位于 vendor/app文件夹。

我已经添加了其他几个包。

问题是手动将包添加到 go.mod 非常乏味,毕竟我可能会错过一些导入。

所以我想知道是否有一些自动技巧来获取 go.mod 的依赖项?

最佳答案

go mod init module-path 初始化模块,这将创建 go.mod文件。使用 go build 构建项目.它会自动将所有依赖项添加到 go.mod , 及物的。
不涉及手动步骤。 go工具为您完成一切。当然你可以编辑go.mod如果自动选择的版本不符合您的需要/意图,则文件并“微调”包含的版本。见 Version Selection默认情况下如何完成。
请注意,从 Go 1.16 开始,go mod tidy可能需要添加依赖项。

关于go - 如何自动将依赖包添加到 go.mod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61889317/

相关文章:

http - 如何重试 HTTP POST 请求

function - 什么时候在 Go 中使用函数表达式而不是函数声明?

Golang - 如何从代码内部显示模块版本

go - 如何在 Go 中重构模块名称?

go - 替换go.sum中的字符串

go - VS Code 抛出错误 'No package for import' 但代码编译并运行良好

go - 根据 Go 中的条件从 slice 中选取值的最惯用方法是什么?

mongodb - 仅在使用 golang 实现查询时使用聚合查询中的空白数据

go - 使用 URL 下载 zip 文件

go - 避免为本地模块的递归依赖写入 "replace"