什么是 changesets?

什么是 Changesets?

Changesets Banner

一个专注于多包仓库并用于管理版本和变更日志的工具


npm package View changelog

changesets 工作流旨在为人们从开始做更改直到发布的过程中提供帮助。它允许贡献者声明他们的变更应该如何发布,然后我们根据提供的信息自动化更新包版本、变更日志,并发布新版本的包。

Changesets 致力于解决多包仓库中的这些问题,保持相互依赖的包在多包仓库中是最新的,并且使得对一组包进行变更变得简单。

我们是如何做到这一点的?

一个 changeset 是一种意图,即以特定的 semver 版本提升类型 发布一组包,并附有对所做变更的总结。

@changesets/cli 包允许你在进行变更时编写 changeset 文件,然后将任意数量的变更集组合成一次发布,该过程会将版本提升类型合并为每个包的一次发布,处理多包仓库中的内部依赖关系,更新变更日志,并通过一个命令从单体仓库中发布所有已更新的包。

如何开始?

如果你只想直接使用 changesets,changesets 使用介绍@changesets/cli 文档是你应该查阅的地方。

如果你想详细了解 changesets 背后的概念,或者理解如何基于 changesets 构建,可以查看我们的 详细解释

我们也提供了一个 术语表

与 CI 的集成

虽然 changesets 可以是一个完全手动的过程,但我们推荐将其与你的 CI 流程集成。

为了检查 PR 是否包含变更集,我们建议使用 changeset-bot,或者如果你想在变化集失败时使构建失败,可以在 CI 中运行

npm run changeset status

为了简化发布过程,你可以使用 这个 Changesets GitHub Action 来自动化创建版本化拉取请求,并可选地发布包。

已经使用 Changesets 管理版本和变更日志的项目

致谢/灵感来源

  • bolt - 为我们带来了关于单体仓库中的包应该如何相互连接的强烈概念,并提供了获取包间信息的初始基础设施。
  • Atlassian - Changesets 代码的原始想法和赞助者,许多理念和流程都是在这里酝酿而成的。它最初是由 Atlaskit 背后的团队实现的。
  • lerna-semantic-release - 奠定了多包仓库内更新包的许多初始模式,并促使我们开始思考如何管理依赖包。
  • Thinkmill - 赞助了该项目的专注开源工作及第二版的重新架构。