Monorepo:如何使用另一个项目的包?
本篇文章给大家分享《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:如何使用另一个项目的包?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注编程网公众号,带你了解更多关于的知识点!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341