Kode-cli/docs/PUBLISH_GUIDE.md

202 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 发包脚本使用指南
Kode 项目提供了两套发包流程专注于npm发布不涉及git操作
## 🚀 快速使用
### 开发版本发布 (测试用)
```bash
npm run publish:dev
```
### 正式版本发布
```bash
npm run publish:release
```
## 📦 发包策略
### 1. 开发版本 (`dev` tag)
- **目的**: 内部测试和预发布验证
- **版本格式**: `1.1.16-dev.1`, `1.1.16-dev.2`
- **安装方式**: `npm install -g @shareai-lab/kode@dev`
- **特点**:
- 自动递增 dev 版本号
- 不影响正式版本的用户
- 可以快速迭代测试
- 临时修改package.json发布后自动恢复
### 2. 正式版本 (`latest` tag)
- **目的**: 面向最终用户的稳定版本
- **版本格式**: `1.1.16`, `1.1.17`, `1.2.0`
- **安装方式**: `npm install -g @shareai-lab/kode` (默认)
- **特点**:
- 语义化版本控制
- 严格的发布流程
- 包含完整的测试和检查
- 永久更新package.json版本号
## 🛠️ 脚本功能详解
### 开发版本发布 (`scripts/publish-dev.js`)
**自动化流程**:
1. 🔢 读取当前基础版本
2. 📊 查询npm上现有的dev版本自动递增
3. 📝 临时更新package.json版本号
4. 🔨 构建项目
5. 🔍 运行预发布检查
6. 📤 发布到npm的`dev` tag
7. 🔄 恢复package.json到原始版本
**使用场景**:
- 功能开发完成,需要内部测试
- PR验证前的最终测试
- 快速修复验证
**安全特性**:
- 临时修改package.json发布后自动恢复
- 失败时自动回滚
- 不会改变本地版本状态
### 正式版本发布 (`scripts/publish-release.js`)
**交互式流程**:
1. 📦 显示当前版本
2. 🔢 选择版本升级类型:
- **patch** (1.1.16 → 1.1.17): 修复 bug
- **minor** (1.1.16 → 1.2.0): 新功能
- **major** (1.1.16 → 2.0.0): 破坏性变更
- **custom**: 自定义版本号
3. ✅ 检查版本是否已在npm上存在
4. 🤔 确认发布信息
5. 📝 更新package.json版本号永久
6. 🧪 运行测试和类型检查
7. 🔨 构建项目
8. 🔍 运行预发布检查
9. 📤 发布到npm (默认`latest` tag)
10. 💡 提示后续git操作建议
**安全特性**:
- 交互式确认,避免误发布
- 检查版本冲突
- 测试失败时自动回滚版本号
- 永久保留版本更改供git提交
## 🎯 最佳实践
### 开发流程建议
```bash
# 1. 开发功能
# ... 开发代码 ...
# 2. 发布开发版本测试
npm run publish:dev
# 安装测试: npm install -g @shareai-lab/kode@dev
# 3. 测试通过后发布正式版本
npm run publish:release
# 4. 手动处理git操作如需要
git add package.json
git commit -m "chore: bump version to x.x.x"
git tag vx.x.x
git push origin main
git push origin vx.x.x
```
### 版本号管理
- **开发版**: 基于当前正式版本自动递增 (1.1.16-dev.1 → 1.1.16-dev.2)
- **正式版**: 遵循 [语义化版本](https://semver.org/lang/zh-CN/) 规范
- **版本检查**: 自动检查npm上是否已存在相同版本
### 标签管理
```bash
# 查看所有版本
npm view @shareai-lab/kode versions --json
# 查看 dev 版本
npm view @shareai-lab/kode@dev version
# 查看最新正式版本
npm view @shareai-lab/kode@latest version
```
## 🔧 故障排除
### 常见问题
**发布失败怎么办?**
- 开发版本脚本会自动回滚package.json
- 正式版本:检查错误信息,修复后重新运行
**版本号冲突?**
- 开发版本会自动递增,不会冲突
- 正式版本发布前会检查是否已存在
**权限问题?**
- 确保已登录npm: `npm whoami`
- 确保有包的发布权限: `npm owner ls @shareai-lab/kode`
**测试失败?**
- 正式版本发布会自动回滚版本号
- 修复测试问题后重新运行
### 手动操作
```bash
# 查看当前登录用户
npm whoami
# 登录npm
npm login
# 查看包信息
npm view @shareai-lab/kode
# 手动发布(不推荐)
npm publish --tag dev # 开发版本
npm publish # 正式版本
```
## 📊 监控和分析
```bash
# 查看包下载统计
npm view @shareai-lab/kode
# 查看所有版本的详细信息
npm view @shareai-lab/kode versions --json
# 测试安装
npm install -g @shareai-lab/kode@dev
kode --version
```
## ⚙️ Git集成建议
虽然发包脚本不包含git操作但建议的git工作流程
**开发版本发布后**:
```bash
# 开发版本不需要git操作package.json已自动恢复
# 继续开发即可
```
**正式版本发布后**:
```bash
# package.json已更新版本号建议提交
git add package.json
git commit -m "chore: bump version to $(node -p "require('./package.json').version")"
git tag "v$(node -p "require('./package.json').version")"
git push origin main
git push origin --tags
```
---
通过这套纯npm发包系统你可以
- 🚀 快速发布开发版本进行内部测试
- 🛡️ 安全发布正式版本给最终用户
- 📈 保持清晰的版本管理
- ⚡ 专注于包发布git操作完全可控
- 🔄 灵活的版本回滚和恢复机制