Monorepo:如何使用来自另一个项目的包?

我正在尝试在 Go 中创建我的第一个 monorepo。项目结构如下所示:

http://img4.mukewang.com/635653b5000147cf03950579.jpg

如图所示,该monoplay文件夹是根目录。该pb文件夹包含gRPC code我想在srv_boo/main.go和文件中使用的生成srv_foo/main.go文件。

问题是,如何使用和文件中生成gRPC code的文件夹?文件夹结构是否正确?pbsrv_boo/main.gosrv_foo/main.go

还想单独部署服务。

也许是https://bazel.build/解决方案?


富国沪深
浏览 160回答 1
1回答

慕娘9325324

将整个存储库作为一个 go 模块将对此有所帮助,即“Monoplay”根文件夹中只有一个 go.mod 文件。然后服务可以使用“github.com/*/monoplay/pb/*”导入来引用生成的 go 文件。这也将集中管理整个存储库的依赖关系,因为只有一个 go.mod 文件,如果你想要的话。其他替代方案:使用“go mod edit”: https: //go.dev/ref/mod#go-mod-edit 或者,正如 DazWilkin 建议的那样,在 proto 文件中使用“go_package”以及“go-grpc_opt”和“go_opt” ”。我使用单模块方法并推荐它。如果存储库将包含大量代码并且构建所有内容(包括容器图像)很麻烦并且需要很长时间,那么请查看 bazel。
打开App,查看更多内容
随时随地看视频慕课网APP