# 语义化版本规范

## 版本号格式

```
主版本.次版本.修订号
```

| 版本位 | 说明 | 何时增加 | 示例 |
|:-------|:-----|:---------|:-----|
| **主版本** | 不兼容的API修改 | 重大重构、破坏性变更 | `1.0.0` → `2.0.0` |
| **次版本** | 向下兼容的功能新增 | 新增功能、新API | `1.0.0` → `1.1.0` |
| **修订号** | 向下兼容的问题修正 | Bug修复、性能优化 | `1.0.0` → `1.0.1` |

## 版本管理生命周期

| 阶段 | 版本 | 说明 |
|:-----|:-----|:-----|
| 初始开发 | `0.1.0` | 首个内测版本 |
| 功能开发 | `0.x.0` → `0.y.0` | 持续迭代（主版本0表示开发阶段） |
| 首次发布 | `1.0.0` | 第一个正式版 |
| 功能迭代 | `1.1.0` → `1.2.0` | 新增功能 |
| Bug修复 | `1.0.1` → `1.0.2` | 修复问题 |
| 重大更新 | `2.0.0` | 破坏性变更 |

## 版本规范配置参考

### package.json（Node.js）
```json
{
  "version": "1.0.0",
  "dependencies": {
    "express": "^4.18.0"
  }
}
```

### plugin.json（mm框架插件）
```json
{
  "name": "plugin_name",
  "version": "1.0.0",
  "dependencies": ["cms", "user"]
}
```

## 禁止行为
- ❌ 禁止跳过版本号直接发布（如从 `1.0.0` 直接到 `2.0.0` 没有次版本过渡）
- ❌ 禁止主版本为0时对外宣称稳定版
- ❌ 禁止在修订号中引入新功能
- ❌ 禁止在 `dependencies` 中使用无锁定范围的依赖（如 `*`）
