跳到主要内容

2 篇博文 含有标签「Changesets」

查看所有标签

当项目开始走向 Monorepo,一个仓库里同时维护多个包时,很快就会遇到一个现实问题:

代码能一起写了,那版本号、CHANGELOG、发版流程怎么一起管?

这时候很多团队会用到一个工具:Changesets

如果用一句最通俗的话解释它,可以这么理解:

Changesets 就像 Monorepo 里的“发版记录单”系统。

你每做完一次改动,就先记一张“这次改了什么、该升哪个版本”的单子;等准备发版时,再统一计算版本号、生成 CHANGELOG、执行发布。

它最适合的场景,就是:

  • 一个仓库里有多个 npm 包
  • 包和包之间有依赖关系
  • 团队希望版本管理更清晰、发布流程更自动化

很多人第一次接触前端工程化时,看到 Monorepopnpm workspaceChangesets 这几个词,经常会有点混:

  • 它们是不是一回事?
  • 为什么总是一起出现?
  • 到底谁负责开发,谁负责发布?

其实它们不是同一种东西,而是处在不同层级

如果只用一句话总结三者关系,可以这么理解:

Monorepo 负责“组织方式”,pnpm workspace 负责“本地开发和依赖管理”,Changesets 负责“版本管理和发布”。

也就是说:

  • Monorepo 是一种架构思路
  • pnpm workspace 是落地这套架构的开发工具
  • Changesets 是给这套架构补上发版流程的工具

这篇文章就专门把这三者的分工讲清楚。