Monorepo:如何使用另一个项目的包?
Monorepo: How to consume a package from another project?
我正在尝试用 Go 创建我的第一个 monorepo。项目结构如下所示:
如图所示,monoplay
文件夹是根目录。
pb
文件夹包含我想在 srv_boo/main.go
和 srv_foo/main.go
文件中使用的生成的 gRPC code
。
问题是,如何在 srv_boo/main.go
和 srv_foo/main.go
文件中使用文件夹 pb
生成的 gRPC code
?
文件夹结构是否正确?
还想单独部署服务。
也许 https://bazel.build/ 是解决方案?
一次性拥有整个存储库 module 将对此有所帮助,即“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”一起使用。
我使用单一 module 方法并推荐它。
如果存储库将包含大量代码并且构建所有内容(包括容器映像)很麻烦并且需要很长时间,那么请查看 bazel。
我正在尝试用 Go 创建我的第一个 monorepo。项目结构如下所示:
如图所示,monoplay
文件夹是根目录。
pb
文件夹包含我想在 srv_boo/main.go
和 srv_foo/main.go
文件中使用的生成的 gRPC code
。
问题是,如何在 srv_boo/main.go
和 srv_foo/main.go
文件中使用文件夹 pb
生成的 gRPC code
?
文件夹结构是否正确?
还想单独部署服务。
也许 https://bazel.build/ 是解决方案?
一次性拥有整个存储库 module 将对此有所帮助,即“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”一起使用。
我使用单一 module 方法并推荐它。
如果存储库将包含大量代码并且构建所有内容(包括容器映像)很麻烦并且需要很长时间,那么请查看 bazel。