go - Monorepo : How to consume a package from another project?

标签 go grpc grpc-go

我正在尝试用 Go 创建我的第一个 monorepo。项目结构如下: enter image description here

正如您在图片中看到的,monoplay 文件夹是根文件夹。 pb 文件夹包含我希望在 srv_boo/main.gosrv_foo/main 中使用的生成的 gRPC 代码。转到 文件。

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

还想单独部署服务。

也许是 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。

关于go - Monorepo : How to consume a package from another project?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70778253/

相关文章:

regex - 如何仅匹配一个字母词

go - 如何不舍入持续时间

docker - 在 Cloud Run 上的 Docker 上执行 gRPC "transport: Error while dialing dial tcp : i/o timeout""

protocol-buffers - 如何从 protobuf (.proto) 文件在 (.json/.yaml) 中生成 swagger3 (OpenAPI3) 规范?

git - go-git:如何在远程服务器上进行身份验证?

mongodb 聚合在 golang 中给出错误

go - Golang 中的 GRPC 连接管理

python - Google 语音 API GRPC 超时

stream - gRPC 流服务只能有一个参数的原因

go - 如何为 GRPC 服务设置 Strict-Transport-Header