feat: 添加现代化版本管理和自动发布系统
This commit is contained in:
178
docs/RELEASE.md
Normal file
178
docs/RELEASE.md
Normal file
@ -0,0 +1,178 @@
|
||||
# PromptX 发布流程
|
||||
|
||||
本文档描述了PromptX项目的版本管理和发布流程。
|
||||
|
||||
## 版本管理策略
|
||||
|
||||
我们采用[Changesets](https://github.com/changesets/changesets)进行版本管理,遵循[语义化版本控制](https://semver.org/lang/zh-CN/)。
|
||||
|
||||
### 版本类型
|
||||
|
||||
- **Patch (0.0.X)**: Bug修复,向后兼容
|
||||
- **Minor (0.X.0)**: 新功能,向后兼容
|
||||
- **Major (X.0.0)**: 破坏性变更,不向后兼容
|
||||
|
||||
## 开发流程
|
||||
|
||||
### 1. 功能开发
|
||||
|
||||
```bash
|
||||
# 创建功能分支
|
||||
git checkout -b feature/new-feature
|
||||
# 开发功能
|
||||
# 提交代码
|
||||
git commit -m "feat: add new feature"
|
||||
```
|
||||
|
||||
### 2. 添加Changeset
|
||||
|
||||
在提交PR之前,为需要发布的变更添加changeset:
|
||||
|
||||
```bash
|
||||
# 添加changeset
|
||||
pnpm changeset
|
||||
|
||||
# 或者使用快捷命令
|
||||
pnpm run version:patch # Bug修复
|
||||
pnpm run version:minor # 新功能
|
||||
pnpm run version:major # 破坏性变更
|
||||
```
|
||||
|
||||
这会创建一个`.changeset/*.md`文件,描述变更内容。
|
||||
|
||||
### 3. 提交PR
|
||||
|
||||
创建Pull Request,确保:
|
||||
- [ ] 所有测试通过
|
||||
- [ ] 代码通过lint检查
|
||||
- [ ] 已添加changeset(如需要发布)
|
||||
- [ ] 更新了相关文档
|
||||
|
||||
## 发布流程
|
||||
|
||||
### 自动发布(推荐)
|
||||
|
||||
我们的CI/CD会自动处理发布:
|
||||
|
||||
1. **合并到main分支**后,GitHub Actions会:
|
||||
- 运行所有测试
|
||||
- 检查是否有pending changesets
|
||||
- 如果有,创建发布PR
|
||||
- 如果没有,发布snapshot版本
|
||||
|
||||
2. **合并发布PR**后:
|
||||
- 自动更新版本号
|
||||
- 生成CHANGELOG.md
|
||||
- 发布到npm
|
||||
- 创建GitHub Release
|
||||
|
||||
### 手动发布
|
||||
|
||||
如需手动发布:
|
||||
|
||||
```bash
|
||||
# 1. 确保在main分支且代码最新
|
||||
git checkout main
|
||||
git pull origin main
|
||||
|
||||
# 2. 运行测试
|
||||
pnpm test:ci
|
||||
|
||||
# 3. 构建项目
|
||||
pnpm build
|
||||
|
||||
# 4. 更新版本并发布
|
||||
pnpm changeset version # 更新版本号
|
||||
pnpm changeset publish # 发布到npm
|
||||
```
|
||||
|
||||
### Snapshot发布
|
||||
|
||||
对于测试版本,可以发布snapshot:
|
||||
|
||||
```bash
|
||||
# 发布snapshot版本
|
||||
pnpm run release:snapshot
|
||||
```
|
||||
|
||||
这会创建类似`0.0.2-snapshot.1`的版本号。
|
||||
|
||||
## 发布检查清单
|
||||
|
||||
发布前请确认:
|
||||
|
||||
- [ ] 所有测试通过
|
||||
- [ ] 代码已通过review
|
||||
- [ ] 文档已更新
|
||||
- [ ] CHANGELOG.md准确反映变更
|
||||
- [ ] 版本号符合语义化版本控制
|
||||
- [ ] 重要变更已在README中标注
|
||||
|
||||
## NPM包管理
|
||||
|
||||
### 配置NPM Token
|
||||
|
||||
在GitHub仓库设置中添加secrets:
|
||||
|
||||
1. `NPM_TOKEN`: NPM发布token
|
||||
2. `GITHUB_TOKEN`: GitHub Actions自动提供
|
||||
|
||||
### 包信息
|
||||
|
||||
- **包名**: `dpml-prompt`
|
||||
- **作用域**: 公开包
|
||||
- **注册表**: `https://registry.npmjs.org/`
|
||||
|
||||
### 安装方式
|
||||
|
||||
```bash
|
||||
# 稳定版本
|
||||
npm install -g dpml-prompt
|
||||
|
||||
# 测试版本
|
||||
npm install -g dpml-prompt@snapshot
|
||||
|
||||
# 指定版本
|
||||
npm install -g dpml-prompt@0.0.2
|
||||
```
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **发布失败**
|
||||
```bash
|
||||
# 检查changeset状态
|
||||
pnpm changeset status
|
||||
|
||||
# 检查npm token
|
||||
npm whoami
|
||||
```
|
||||
|
||||
2. **版本冲突**
|
||||
```bash
|
||||
# 重置changeset
|
||||
rm -rf .changeset/*.md
|
||||
pnpm changeset
|
||||
```
|
||||
|
||||
3. **构建失败**
|
||||
```bash
|
||||
# 清理并重新安装
|
||||
rm -rf node_modules pnpm-lock.yaml
|
||||
pnpm install
|
||||
pnpm build
|
||||
```
|
||||
|
||||
### 联系支持
|
||||
|
||||
如遇到发布问题,请:
|
||||
1. 检查GitHub Actions日志
|
||||
2. 查看[Issues](https://github.com/Deepractice/PromptX/issues)
|
||||
3. 联系维护者:sean@deepracticex.com
|
||||
|
||||
## 参考资料
|
||||
|
||||
- [Changesets文档](https://github.com/changesets/changesets)
|
||||
- [语义化版本控制](https://semver.org/lang/zh-CN/)
|
||||
- [NPM发布指南](https://docs.npmjs.com/creating-and-publishing-unscoped-public-packages)
|
||||
Reference in New Issue
Block a user