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

Bab*_*abr 4 go go-modules

我已经修改了一个现有的 github 项目,其中包含数十个 3rd 方导入包,但我保持基本结构不变,如下所示:

.
??? 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
Run Code Online (Sandbox Code Playgroud)

现在我想使用 go 模块来使项目具有可移植性。

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"
)
Run Code Online (Sandbox Code Playgroud)

如您所见,代码主要位于vendor/app文件夹中。

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

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

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

icz*_*cza 10

用 初始化模块go mod init module-path,这将创建go.mod文件。使用go build. 它会自动地将所有依赖项添加到 中go.mod

不涉及手动步骤。该go工具为您完成一切。当然,go.mod如果自动选择的版本不符合您的需要/意图,您可以编辑文件并“微调”包含的版本。请参阅默认情况下如何进行版本选择

请注意,从 Go 1.16 开始,go mod tidy可能需要添加依赖项。