+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > Monorepo:如何使用另一个项目的包? >

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

时间:2024-04-08 08:50:17

本篇文章给大家分享《Monorepo:如何使用另一个项目的包?》,覆盖了golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容
我正在尝试用 Go 创建我的第一个 monorepo。项目结构如下:

如图所示,monoplay 文件夹是根文件夹。 pb 文件夹包含生成的 grpc 代码 ,我想在 srv_boo/main.go 和 srv_foo/main.go 文件中使用它。

问题是,如何使用 srv_boo/main.go 和 srv_foo/main.go 文件中的 pb 文件夹中生成的 grpc 代码 ? 文件夹结构是否正确?

还想单独部署服务。

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


正确答案

将整个存储库作为一个 go 模块将有助于解决此问题,即“Monoplay”根文件夹中只有一个 go.mod 文件。 然后服务可以使用“GitHub.com/*/monoplay/pb/*”导入引用生成的 go 文件。
这也将集中整个存储库的依赖管理,因为只有一个 go.mod 文件(如果您需要的话)。

其他替代方案:
使用“go mod edit”: Https://go.dev/ref/mod#go-mod-edit
或者,正如 DazWilkin 建议的那样,在原始文件中将“go_package”与“go-grpc_opt”和“go_opt”一起使用。

我使用单模块方法并推荐它。

如果存储库将包含大量代码并且构建所有内容(包括容器映像)很麻烦并且需要很长时间,那么请查看 bazel。

到这里,我们也就讲完了《Monorepo:如何使用另一个项目的包?》的内容了。

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title