Changesets 命令行工具完全指南
前言
Changesets 是一个专为管理 monorepo 项目版本控制和变更日志而设计的工具。它通过一套简洁的命令行接口,帮助开发团队高效地管理项目版本更新和发布流程。本文将全面介绍 Changesets 提供的所有命令行工具及其使用场景。
核心命令概述
Changesets 提供了7个主要命令,覆盖了从初始化到发布的完整工作流:
init
- 初始化 Changesets 配置add
- 创建变更记录version
- 更新版本号和变更日志publish
- 发布到 npmstatus
- 查看当前变更状态pre
- 管理预发布模式tag
- 创建 Git 标签
详细命令解析
1. 初始化命令:init
changeset init
此命令会在项目中创建 .changeset
目录,包含:
- 配置文件 (config.json)
- 说明文档 (README.md)
最佳实践:项目初始化时只需执行一次此命令。
2. 变更记录命令:add
changeset add
# 或简写
changeset
这是最常用的命令,用于记录代码变更。执行后会交互式询问:
- 需要更新的包
- 每个包的版本更新类型 (major/minor/patch)
- 变更摘要说明
实用选项:
--empty
:创建空变更记录(用于 CI 检查)--open
:在编辑器中打开生成的变更文件
变更文件示例:
---
"@changesets/cli": major
---
重大变更说明...
3. 版本更新命令:version
changeset version
此命令执行以下操作:
- 根据变更记录更新包版本
- 更新依赖关系
- 生成变更日志
重要选项:
--ignore
:跳过指定包的版本更新--snapshot
:创建临时测试版本(不推荐直接使用)
注意事项:建议在运行 publish 前确保版本变更已合并到主分支。
4. 发布命令:publish
changeset publish
发布流程包括:
- 检查包版本是否已发布
- 执行 npm/pnpm publish
- 创建 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
工作流建议
- 开发阶段:使用
add
记录变更 - 准备发布:运行
version
更新版本 - 发布阶段:执行
publish
发布到 npm - 特殊情况:
- 测试发布使用
--snapshot
- 预发布使用
pre
命令
- 测试发布使用
常见问题解答
Q:为什么要把 version 和 publish 分开? A:分离这两个步骤允许团队在正式发布前检查版本变更是否正确。
Q:如何跳过某些包的发布? A:使用 version --ignore
,但要注意依赖关系限制。
Q:变更记录文件可以手动编辑吗? A:完全可以,Changeset 文件设计为可手动编辑的 Markdown 格式。
通过掌握这些命令,团队可以建立高效的版本管理和发布流程,特别适合 monorepo 项目环境。Changesets 通过清晰的命令行接口,简化了复杂的版本控制工作。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考