本文档面向从 v1.x 升级到当前最新 v2.2.1 的用户。
范围说明:
- 基线对比为
v1.2.0 -> v2.2.1
大多数 release / publish 核心流程在 v2 中仍然延续 v1 的使用方式,真正需要迁移的点主要集中在:
CLI参数定义调整commit-lint的入参方式变更changelog的 Node API 与生成策略调整
Node.js 与包格式方面没有新增迁移成本:
v1已经是纯ESMv2仍然要求Node.js ^20.19.0 || >=22.12.0
v1:
vr commit-lint -p .git/COMMIT_EDITMSGv2:
vr commit-lint .git/COMMIT_EDITMSG如果你在 simple-git-hooks、husky 或自定义脚本里还在传 -p / --commitMessagePath,需要改成直接传文件路径。
推荐写法:
{
"simple-git-hooks": {
"commit-msg": "pnpm exec vr commit-lint $1"
}
}v1 的 changelog 支持:
- CLI:
--preset - Node API:
preset
v2 已移除这部分能力,最终实现固定为当前内置的 changelog 生成策略。
如果你之前有下面这类调用,需要删除:
vr changelog --preset angularchangelog({
preset: 'angular',
})v1:
changelog({
writerOpts: {
/* ... */
},
})v2:
changelog({
writerOpt: {
/* ... */
},
})如果你有自定义 changelog 输出格式,这一项需要同步修改。
长参数整体变化不大,但部分短参数已经变更或移除:
| 命令 | v1 | v2 |
|---|---|---|
release |
-nt, --npm-tag |
-t, --npm-tag |
release |
-sc, --skip-changelog |
--skip-changelog |
release |
-sgt, --skip-git-tag |
--skip-git-tag |
changelog |
-rc, --releaseCount |
-c, --releaseCount |
commit-lint |
-p, --commitMessagePath |
改为位置参数 |
如果你的 CI、脚本或 Git Hook 使用了旧短参数,建议统一替换为当前写法。
虽然 changelog 功能保留,但 v2 最终采用了新的生成实现,升级后你需要留意以下兼容性:
- 生成内容的分组标题可能有变化,例如
Code Refactoring变为Refactoring - 不再通过
preset切换输出风格 - 新增了
showTypes、outputUnreleased、cwd等能力
如果你的项目会:
- 解析
CHANGELOG.md文本 - 依赖固定章节标题
- 对 changelog 模板做二次处理
建议升级后重新生成一次并比对产物。
v1:
changelog({
file?: string
releaseCount?: number
preset?: string
writerOpts?: object
})v2:
changelog({
cwd?: string
releaseCount?: number
file?: string
showTypes?: string[]
outputUnreleased?: boolean
writerOpt?: object
})迁移建议:
- 删除
preset - 将
writerOpts改为writerOpt - 如果你以前通过外部切换
preset控制输出风格,改为基于writerOpt或生成结果做兼容
这两个 API 在 v2 中主要是增强,不是破坏性迁移:
release新增cwdpublish新增cwd
已有 v1 调用通常可以直接继续使用。
以下能力是 v2 新增的,不影响旧代码,但升级后可以考虑接入:
lockfile-checkCLI 命令lockfileCheckNode API 导出changelog({ outputUnreleased: true })
示例:
{
"simple-git-hooks": {
"post-merge": "pnpm exec vr lockfile-check"
}
}- 升级
@varlet/release到最新v2 - 全局搜索以下旧用法并替换
- 重新跑一次本地
release/changelog/commit-lint - 重点检查 Git Hook、CI 和自定义脚本
建议搜索关键词:
commitMessagePath--presetwriterOpts-nt-rc-sc-sgt
v1:
{
"simple-git-hooks": {
"commit-msg": "pnpm exec vr commit-lint -p $1"
}
}v2:
{
"simple-git-hooks": {
"commit-msg": "pnpm exec vr commit-lint $1",
"post-merge": "pnpm exec vr lockfile-check"
}
}v1:
import { changelog } from '@varlet/release'
await changelog({
releaseCount: 0,
preset: 'angular',
writerOpts: {},
})v2:
import { changelog } from '@varlet/release'
await changelog({
releaseCount: 0,
writerOpt: {},
})