如何在 monorepo 中维护每个模块的自动更改日志?

Posted

技术标签:

【中文标题】如何在 monorepo 中维护每个模块的自动更改日志?【英文标题】:How can I maintain an automatic changelog per module in a monorepo? 【发布时间】:2021-03-10 15:41:18 【问题描述】:

我正在开发一个由多个 git 存储库组成的项目。有多个微服务、一个前端、一些 npm 包和网关容器等。

由于我经常遇到这样的问题,即对于新功能,我必须更改多个存储库中的代码,因此我在大量的拉取请求中迷失了方向。

为了简化这一点,我正在考虑将存储库移动到单个 monorepo。事实上,我已经将一些 npm 包合并到一个存储库中。

直到现在我使用standard-version 来创建基于 git 提交的变更日志。我仍然希望每个模块有一个变更日志。显然,这不适用于 standard-version,因为它会检查每个存储库而不是每个模块目录的提交。

是否仍有可能为每个模块创建一个变更日志,例如仅使用受影响目录中的文件的提交消息还是在提交消息中使用范围?还有其他想法吗?

通常每个模块都有自己的版本,并不是所有的都是 JS/Node/npm-projects。如果我必须手动管理每个模块的发布也很好。

【问题讨论】:

【参考方案1】:

我不知道您是如何配置存储库的,因为您没有提供任何 .versionrc 文件或 package.json 文件示例,但 standard-version 有一个 --path 选项。

来自帮助命令:

npx standard-version --help

我知道了:

--path              Only populate commits made under this path                     [string]

因此,您可以在 package.json 脚​​本中使用该选项作为发布命令的参数,或者将其添加到您的 .versionrc

如果每个包都有单独的文件,这应该很容易,如果你有一个全局脚本,你应该为每个包设置单独的发布命令,并为每个命令设置每个路径。

【讨论】:

以上是关于如何在 monorepo 中维护每个模块的自动更改日志?的主要内容,如果未能解决你的问题,请参考以下文章

lerna+yarn workspace+monorepo项目的最佳实践

如何在 monorepo 中成功锁定节点模块依赖项?

如何管理多个monorepos

如何在 Monorepo 中的 VueJS 项目之间共享组件

在 monorepo Azure 中部署单一服务

Monorepo 中的对等依赖关系