假设我有一个 monorepo 并且有几个单独的 golang 服务:
\nroot \n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 services\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 svc1\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.sum\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 svc2\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.sum\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\nRun Code Online (Sandbox Code Playgroud)\n而 svc2 将来将依赖于 svc1。另外,要求svc1和svc2可以单独释放。
\n有没有办法可以单独发布模块?go mod 文档仅假设只有 repo,因此它不提供这样的灵活性。
\nbcm*_*lls 16
要标记存储库子目录中模块的发布版本,请添加子目录作为标记的前缀,例如svc1/v0.1.0.
根据https://golang.org/ref/mod#vcs-version:
\n\n\n如果模块是在存储库 \xe2\x80\xa6 内的子目录中定义的,则每个标记名称必须以模块子目录作为前缀,后跟斜杠。例如,模块
\ngolang.org/x/tools/gopls定义在gopls存储库的子目录中,根路径为golang.org/x/tools。该模块的版本必须具有该存储库中v0.4.0命名的标签。gopls/v0.4.0