Skip to content

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'

参数

参数名类型必填说明
currentVersionstring当前版本号字符串(如 "1.2.3")
typeVersionType递增类型
prereleasestring预发布标识符(仅当 type 为 'prerelease' 时需要)

返回值

类型说明
string递增后的版本号字符串

异常

错误类型触发条件错误信息
Errortype 为 'prerelease' 但未提供 prerelease 参数"预发布版本需要指定 prerelease 标识符"
Errortype 值无效"不支持的版本类型: {type}"

工作原理

incrementVersion(递增版本)

  1. 解析当前版本:使用 parseVersion 解析版本字符串

  2. 根据类型递增

    • major: major + 1, minor = 0, patch = 0, 移除 prerelease
    • minor: 保持 major, minor + 1, patch = 0, 移除 prerelease
    • patch: 保持 majorminor, patch + 1, 移除 prerelease
    • prerelease:
      • 如果当前已是相同标识的预发布版本,递增预发布版本号
      • 否则,patch + 1 并添加新的预发布标识(如 "beta.0")
  3. 格式化输出:使用 stringifyVersion 转换为字符串

suggestVersionType(建议版本类型)

  1. 将变更描述数组合并为文本并转小写
  2. 检测变更类型:
    • 包含 "breaking" 或 "major" → 建议 'major'
    • 包含 "feat"、"feature" 或 "add" → 建议 'minor'
    • 其他情况 → 建议 'patch'
  3. 返回建议的版本类型

遵循语义化版本(Semver 2.0.0)规范。