Changesets - 為 monorepo 而生的版本管理工具
monorepo
是一種能夠將多個專案項目整合在一個倉庫中集中管理的一種架構,在現代軟題開發中十分盛行,許多知名的 npm 套件像是: material-ui, Chakra UI, pnpm 等,都採用了 monorepo 架構在單一倉庫中管理多個套件。然而,使用 monorepo 同時管理多個套件同時也面臨了一個挑戰:該如何為這些套件進行獨立版本控制 ? 若手動進行,這將是極其繁瑣的工作。而這正是 Changesets
發揮作用的地方。
Changesets
Changesets 是一個專為 monorepo 設計的版本管理工具,能夠控制管理單一倉庫中所有套件的獨立版本。它不僅簡化了多套件的版本管理工作,還提供了強大的自動化功能,幫助開發者最佳化 monorepo 的工作流程。
本文將帶你瞭解 Changesets,探索它如何幫助我們在 monorepo 環境中更高效地進行版本控制和發佈。無論你是初次接觸 monorepo,還是 希望最佳化現有工作流程的開發者,希望這篇文章都為你提供有價值的見解。
認識 Changesets
Changesets 的功能
Changesets 的用途是簡化在單一倉庫中管理多個套件版本的過程,他的主要功能如下:
- 生成 changeset (.md 文件): Changesets 提供了一套簡易的介面,能夠將開發者每次開發的程式碼變更紀錄整理成獨立且有固定排版規則的 .md 文件,我們將這些文件稱之為 changeset。
- 簡化更版流程: Changesets 可以自動處理版本號的遞增,並且能夠在更新套件版本時,將專案內所有的 changeset .md 文件統整成變更記錄(CHANGELOG.md),幫助團隊成員和用戶了解每次更版的改動內容。
- 管理多 package 的版本變更: 在 monorepo 中,手動管理每個 package 的版本變更記錄是很繁瑣的工作,Changesets 可以辨識每個套件是否有變更,也可以自動彙整不同套件的變更記錄。
- 自動發布: 整合 CI/CD 流程,自動發布新的版本,減少手動操作和錯誤。(目前僅支援 Github Action)