我修改了 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/