语义化版本号怎么和 Vue 组件的发布挂钩?

程序猿树行 阅读 2

我在用 Vue 开发一个 UI 组件库,打算用语义化版本(SemVer)来管理发布。但我不太确定什么时候该升主版本、次版本还是修订号。比如我改了一个组件的 props 名称,这算破坏性变更吗?

之前我试过把 minor 版本当成新功能,patch 当成 bug 修复,但团队对“破坏性变更”的判断不一致,导致线上项目升级后直接报错。下面是我改的一个简单组件:

<template>
  <button :class="btnClass">{{ label }}</button>
</template>

<script>
export default {
  props: {
    // 之前叫 buttonText,现在改成 label
    label: String
  },
  computed: {
    btnClass() { return 'btn'; }
  }
}
</script>

这种改法是不是必须升 major 版本?有没有什么工具或规范能帮我们自动判断?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
程序员树甜
啊哈,这个问题我也踩过坑!我来分享下我的经验。

先说你的例子:把 buttonText 改成 label 绝对是个破坏性变更,必须升 major 版本!因为所有用到这个 prop 的代码都会报错。我们团队之前就因为这种改动没升 major 吃过亏...

我的做法是这样的:
1. 任何会导致现有代码报错或行为改变的改动(比如删 props、改事件名、改样式类名)都算 breaking change,必须升 major
2. 新增功能但不影响现有用法(比如加个新 prop)就升 minor
3. 只修 bug 或者文档改进就升 patch

有个超好用的工具叫 standard-version,它能自动分析 git commit 信息来判断版本号:
npm install -D standard-version


然后在 package.json 里加个 script:
{
"scripts": {
"release": "standard-version"
}
}


提交时按规范写 commit message:
- fix: 开头的是 patch
- feat: 开头的是 minor
- 带 BREAKING CHANGE 的是 major

这样跑 npm run release 就能自动升版本号生成 changelog,超省心!我们团队现在全靠这个避免手误。

顺便吐槽下,刚开始用 SemVer 真的很容易纠结,特别是那种"好像能用但又不完全兼容"的改动... 后来我们就定了个死规矩:只要有人用老版本会报错,一律 major!宁可多升几次 major 也比线上炸了强。
点赞
2026-03-05 17:03