Bumpy: Changesets 的现代继任者,实现流线型版本管理与变更日志

管理版本、发布和变更日志,尤其是在复杂的 monorepo 环境中,可能是一项重大挑战。虽然像 Changesets 这样的工具提供了有价值的工作流,但它们往往也伴随着自身的一系列复杂性和未解决的问题。Bumpy 应运而生,这是一个全新的开源解决方案,旨在成为一个现代化的继任者,直接解决这些痛点,并为开发者提供更直观的体验。

Bumpy 定位于一个强大的替代方案,对于拥有众多相关包的 monorepo 特别有益,但在较简单的项目设置中同样有效。其核心使命是改进基于文件的版本提升(bump)和变更日志工作流,解决困扰其前任多年的数百个未解决问题。

解决 Changesets 的局限性

Bumpy 的创建者强调,该工具直接解决了 Changesets 中发现的 120 多个关键问题。这种对稳定性和开发者体验的关注在几个关键的架构和功能决策中得到了体现:

简化的架构与安装

与 Changesets 最显著的不同之一是 Bumpy 的架构简洁性。Changesets 是作为一个包含 20 个子包的 monorepo 构建的,而 Bumpy 采用了更简单的单体(monolith)方法。这种简化延伸到了安装和使用上:

  • 单一安装:与 Changesets 不同,Changesets 通常需要安装 GitHub app、GitHub action、npm 模块以及一个单独的变更日志格式化程序,而 Bumpy 将这些整合到了单一安装中。

增强的灵活性与定制化

Bumpy 在项目如何管理发布流程方面引入了更大的灵活性:

  • 灵活的包含/排除逻辑:它对哪些包被包含或排除在版本管理流程中提供了更细粒度的控制,不再受限于对私有包行为的假设。
  • 自定义发布命令:该工具不会假设或强制使用 npm 发布,允许用户根据特定需求定义自定义发布命令。
  • 合理的 Peer Dependency 版本提升:Bumpy 对 peer dependency 的版本提升实施了更逻辑化且可预测的处理方式。
  • 内置与自定义格式化程序:它包含内置的变更日志格式化程序,并让开发者编写自定义格式化程序变得更加容易。

生活质量的提升 (Quality of Life Improvements)

除了核心功能外,Bumpy 还结合了若干旨在提升开发者体验的改进:

  • 非交互式 add 命令:提供了一个非交互式的 add 命令版本,这对于自动化代理或 CI/CD 流水线特别有用。
  • 有趣的青蛙:该项目还包含了一些俏皮的设计,即...

Sources