Changesets 是 JavaScript monorepos 的文件版本控制和更改工具,现已发布 v3.0,这是自 v2 以来七年来的第一个主要版本,带来了更简单的安装、重新设计的 CLI 以及对如何破坏对等依赖关系的期待已久的更改。
该版本于 2026 年 8 月 11 日发布,由 Mateusz Burzynski、Björn Lu 和 Adam Haglund 组成的新维护团队领导,负责制定 v3 公开发布计划。它配备了新的文档站点、兼容性/操作 v2 更改以及每周超过 300 万次的下载量。
现在,所有软件包仅支持 ESM,并且至少需要 Node.js 22.11 或更高版本,以及 pnpm 10、npm 10.9 或 Yarn 4.5.2,并放弃 Yarn Classic。清理将安装大小从 16.1MB 减少到 2.1MB,依赖项从 95 个减少到 39 个,并将 tsdown、rolldown、vitest 和 oxfmt 移到项目内。 Changelog 格式不再采用其花哨的版本,而是使用 @changesets/format 在项目中定义花哨、oxfmt、deno 或 dprint。
主要行为变化是对等依赖项更新现在提供依赖项而不是重大打击。多年来,旧的行为一直引起人们的抱怨,其中包括第 1011 期,一个维护 monorepo 设计系统的小组写道,主要版本的方法“认为它发送了错误的消息并且不尊重服务器”。移植真正中断的作者仍然可以为依赖项添加显式更改。
最近推出的竞争对手 Bumpy 的维护者指出,v3“强化了抗锯齿代码”,因为每个对等点更改现在都被认为是不间断的,并且两个版本都不允许您配置传播。到目前为止,他们的比较认为 v3 解决了许多长期存在的投诉,同时列出了诸如 pnpm 目录支持和未更改的预发布设计等缺点。
cac 中的 CLI 已重新设计,可以分析参数并单击协作请求,这还修复了破坏流程的已取消请求。新的 pack 和 publish-plan 命令支持 e18e 社区推荐的构建、打包和发布顺序,而 Action v2 公开了子操作,因此使用 npm 可信版本的团队可以限制发布权限。
升级基本上是迁移指南中记录的配置作业。除了安装要求之外,命令和标志也被命名为:
# v2
changeset tag
changeset status --sinceMaster
# v3
changeset git-tag
changeset status --since=main
配置也发生了变化, prettier 已被替换 format 并且私有包不再被复制,直到您再次登录:
{
"format": "auto",
"privatePackages": { "version": true, "tag": false }
}
changeset version 现在,当没有任何内容可发布时,会以代码 1 退出,因此正如一个团队的发布手册所警告的那样,“任何在 set -e 下无条件运行它的脚本现在都将在空发布时失败”。
与从常规提交和发布推断版本的发布语义相反,变更集维护自己的业务,其中贡献者在日志文件中写入发布意图,并且发布仍然被视为拉取请求。 v3 并没有改变这个模型,它使得安装成本更低并且在对等依赖关系方面表现得更好。
Changesets 是 MIT 许可的工具,用于管理版本和变更,重点是 monorepos。贡献者声明应如何发布他们的更改,CLI 将这些声明转换为版本发布、更改日志条目和注册表发布。 v3 现已可用,v2 在维护分支中维护。