Changesets 命令行工具完全指南

Changesets 命令行工具完全指南

changesets 🦋 A way to manage your versioning and changelogs with a focus on monorepos changesets 项目地址: https://gitcode.com/gh_mirrors/ch/changesets

前言

Changesets 是一个专为管理 monorepo 项目版本控制和变更日志而设计的工具。它通过一套简洁的命令行接口,帮助开发团队高效地管理项目版本更新和发布流程。本文将全面介绍 Changesets 提供的所有命令行工具及其使用场景。

核心命令概述

Changesets 提供了7个主要命令,覆盖了从初始化到发布的完整工作流:

  1. init - 初始化 Changesets 配置
  2. add - 创建变更记录
  3. version - 更新版本号和变更日志
  4. publish - 发布到 npm
  5. status - 查看当前变更状态
  6. pre - 管理预发布模式
  7. tag - 创建 Git 标签

详细命令解析

1. 初始化命令:init

changeset init

此命令会在项目中创建 .changeset 目录,包含:

  • 配置文件 (config.json)
  • 说明文档 (README.md)

最佳实践:项目初始化时只需执行一次此命令。

2. 变更记录命令:add

changeset add
# 或简写
changeset

这是最常用的命令,用于记录代码变更。执行后会交互式询问:

  1. 需要更新的包
  2. 每个包的版本更新类型 (major/minor/patch)
  3. 变更摘要说明

实用选项

  • --empty:创建空变更记录(用于 CI 检查)
  • --open:在编辑器中打开生成的变更文件

变更文件示例

---
"@changesets/cli": major
---

重大变更说明...

3. 版本更新命令:version

changeset version

此命令执行以下操作:

  • 根据变更记录更新包版本
  • 更新依赖关系
  • 生成变更日志

重要选项

  • --ignore:跳过指定包的版本更新
  • --snapshot:创建临时测试版本(不推荐直接使用)

注意事项:建议在运行 publish 前确保版本变更已合并到主分支。

4. 发布命令:publish

changeset publish

发布流程包括:

  1. 检查包版本是否已发布
  2. 执行 npm/pnpm publish
  3. 创建 Git 标签

关键选项

  • --otp:提供 npm 双因素认证令牌
  • --tag:指定发布标签(非 latest)

发布后建议

git push --follow-tags

5. 状态查询命令:status

changeset status

查看当前变更记录状态,支持:

  • --verbose:显示详细信息
  • --output:输出 JSON 格式状态
  • --since:基于特定 Git 引用查询

6. 预发布命令:pre

changeset pre enter next  # 进入预发布模式
changeset pre exit        # 退出预发布模式

注意事项:预发布功能较为复杂,建议充分了解后再使用。

7. 标签命令:tag

changeset tag

创建 Git 标签但不发布,适用于:

  • 使用其他工具发布时
  • 仅需要版本标签的场景

标签格式:

  • 单包项目:v1.0.0
  • monorepo:pkg-name@version-number

工作流建议

  1. 开发阶段:使用 add 记录变更
  2. 准备发布:运行 version 更新版本
  3. 发布阶段:执行 publish 发布到 npm
  4. 特殊情况
    • 测试发布使用 --snapshot
    • 预发布使用 pre 命令

常见问题解答

Q:为什么要把 version 和 publish 分开? A:分离这两个步骤允许团队在正式发布前检查版本变更是否正确。

Q:如何跳过某些包的发布? A:使用 version --ignore,但要注意依赖关系限制。

Q:变更记录文件可以手动编辑吗? A:完全可以,Changeset 文件设计为可手动编辑的 Markdown 格式。

通过掌握这些命令,团队可以建立高效的版本管理和发布流程,特别适合 monorepo 项目环境。Changesets 通过清晰的命令行接口,简化了复杂的版本控制工作。

changesets 🦋 A way to manage your versioning and changelogs with a focus on monorepos changesets 项目地址: https://gitcode.com/gh_mirrors/ch/changesets

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葛易曙Linda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值