Bumpy: Changesets 的現代繼承者,實現流暢的版本管理與變更日誌

管理版本、發佈以及變更日誌(changelogs),特別是在複雜的 monorepo 環境中,可能是一項重大的挑戰。雖然像 Changesets 這樣的工具提供了有價值的流程,但它們通常也伴隨著各自的一套複雜性與尚未解決的問題。這就是 Bumpy 的登場時機,這是一款全新的開源解決方案,旨在成為現代化的繼承者,直接解決許多這些痛點,並為開發者提供更直觀的體驗。

Bumpy 將自己定位為一個強大的替代方案,對於擁有眾多相關套件的 monorepo 特別有益,但在較簡單的專案設定中同樣有效。其核心使命是精煉基於檔案的版本跳號(bump)與變更日誌工作流,解決多年來困擾其前輩的數百個未解決問題。

解決 Changesets 的限制

Bumpy 的創作者強調,該工具直接解決了在 Changesets 中發現的超過 120 個關鍵問題。這種對穩定性與開發者體驗的關注,體現在幾個關鍵的架構與功能決策中:

簡化的架構與安裝

與 Changesets 最顯著的不同之一是 Bumpy 的架構簡潔性。雖然 Changesets 是以包含 20 個子套件的 monorepo 形式構建,但 Bumpy 採用了更簡單的單體(monolith)方法。這種簡化也延伸到了安裝與使用上:

  • 單一安裝:與 Changesets 不同(Changesets 通常需要安裝 GitHub app、GitHub action、npm module 以及一個獨立的 changelog formatter)相比,Bumpy 將這些整合進單一安裝中。

增強的靈活性與自定義能力

Bumpy 在專案如何管理其發佈流程方面引入了更大的靈活性:

  • 靈活的包含/排除邏輯:它提供了對哪些套件被包含或排除在版本管理流程中的更細粒度控制,不再受限於對私有套件行為的假設。
  • 自定義發佈指令:該工具不會假設或強制使用 npm 發佈,允許使用者定義符合其特定需求的自定義發佈指令。
  • 合理的 Peer Dependency 跳號:Bumpy 對 peer dependency 版本跳號實施了更具邏輯性且可預測的處理方式。
  • 內建與自定義格式化工具:它包含了內建的變更日誌格式化工具,並讓開發者更容易撰寫自己的自定義格式化工具。

生活品質提升(Quality of Life Improvements)

除了核心功能外,Bumpy 還整合了幾項旨在提升開發者體驗的生活品質增強功能:

  • 非互動式 add 指令:提供 add 指令的非互動版本,這對於自動化代理或 CI/CD 流水線特別有用。
  • 令人愉悅的青蛙:該專案還包含了一些俏皮的元素,它是

Sources