incrementVersion
递增语义化版本号,支持 major、minor、patch 和 prerelease 版本递增。
函数签名
typescript
function incrementVersion(
currentVersion: string,
type: VersionType,
prerelease?: string
): string
function suggestVersionType(changes: string[]): VersionType
type VersionType = 'major' | 'minor' | 'patch' | 'prerelease'参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
currentVersion | string | 是 | 当前版本号字符串(如 "1.2.3") |
type | VersionType | 是 | 递增类型 |
prerelease | string | 否 | 预发布标识符(仅当 type 为 'prerelease' 时需要) |
返回值
| 类型 | 说明 |
|---|---|
string | 递增后的版本号字符串 |
异常
| 错误类型 | 触发条件 | 错误信息 |
|---|---|---|
Error | type 为 'prerelease' 但未提供 prerelease 参数 | "预发布版本需要指定 prerelease 标识符" |
Error | type 值无效 | "不支持的版本类型: {type}" |
工作原理
incrementVersion(递增版本)
解析当前版本:使用
parseVersion解析版本字符串根据类型递增:
- major:
major + 1,minor = 0,patch = 0, 移除 prerelease - minor: 保持
major,minor + 1,patch = 0, 移除 prerelease - patch: 保持
major和minor,patch + 1, 移除 prerelease - prerelease:
- 如果当前已是相同标识的预发布版本,递增预发布版本号
- 否则,
patch + 1并添加新的预发布标识(如 "beta.0")
- major:
格式化输出:使用
stringifyVersion转换为字符串
suggestVersionType(建议版本类型)
- 将变更描述数组合并为文本并转小写
- 检测变更类型:
- 包含 "breaking" 或 "major" → 建议
'major' - 包含 "feat"、"feature" 或 "add" → 建议
'minor' - 其他情况 → 建议
'patch'
- 包含 "breaking" 或 "major" → 建议
- 返回建议的版本类型
遵循语义化版本(Semver 2.0.0)规范。