版本管理

6. 版本管理

6.1 语义化版本(Semantic Versioning)

1
2
3
4
5
6
7
8
9
10
版本格式:主版本号.次版本号.修订号 (MAJOR.MINOR.PATCH)

1.0.0 → 1.0.1 修复bug(PATCH)
1.0.1 → 1.1.0 新增功能,向下兼容(MINOR)
1.1.0 → 2.0.0 重大更新,不兼容(MAJOR)

先行版本:
1.0.0-alpha.1 内测版本
1.0.0-beta.1 公测版本
1.0.0-rc.1 候选版本

6.2 版本发布流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 使用standard-version自动化版本管理
npm install standard-version -D

# package.json
{
"scripts": {
"release": "standard-version",
"release:minor": "standard-version --release-as minor",
"release:major": "standard-version --release-as major"
}
}

# 发布流程
npm run release # 自动升级版本,生成CHANGELOG
git push --follow-tags # 推送代码和tag
npm publish # 发布到npm

6.3 Monorepo管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 使用pnpm workspace
// pnpm-workspace.yaml
packages:
- 'packages/*'

// package.json
{
"name": "my-monorepo",
"private": true,
"workspaces": [
"packages/*"
]
}

// packages/ui/package.json
{
"name": "@myapp/ui",
"version": "1.0.0"
}

// packages/utils/package.json
{
"name": "@myapp/utils",
"version": "1.0.0"
}

// 安装依赖
pnpm install

// 运行特定包的命令
pnpm --filter @myapp/ui dev