# 发布检查清单

## 发布前准备

### ✅ 代码质量检查
- [ ] 运行 `cargo fmt` 格式化代码
- [ ] 运行 `cargo clippy` 检查代码质量
- [ ] 运行 `cargo test` 确保所有测试通过
- [ ] 修复所有编译警告

### ✅ 功能测试
- [ ] 测试本地安装: `node install.js`
- [ ] 测试 npm 包: `node bin/lsp --version`
- [ ] 测试 Cargo 构建: `cargo build --release`
- [ ] 测试核心功能: `lsp -la`
- [ ] 测试错误处理

### ✅ 文档更新
- [ ] 更新 README.md
- [ ] 检查版本号一致性
- [ ] 更新 CHANGELOG.md（如果有）
- [ ] 检查示例代码

### ✅ 配置检查
- [ ] 确认 GitHub 仓库 URL 正确
- [ ] 检查 package.json 配置
- [ ] 检查 Cargo.toml 配置
- [ ] 验证 GitHub Actions 配置

## 发布流程

### 1. 版本管理
```bash
# 更新版本号（同步 Cargo.toml 和 package.json）
node scripts/bump-version.js patch  # 或 minor/major

# 创建 Git 标签
node scripts/bump-version.js patch --tag
```

### 2. 推送到 GitHub
```bash
# 推送代码和标签
git push origin main --tags
```

### 3. GitHub Actions 自动发布
- ✅ 构建多平台二进制文件
- ✅ 创建 GitHub Release
- ✅ 发布到 crates.io
- ✅ 发布到 npm

### 4. 手动发布（备选）

#### 发布到 crates.io
```bash
cargo publish
```

#### 发布到 npm
```bash
npm publish
```

## 发布后验证

### ✅ 安装测试
```bash
# 测试 npm 安装
npm install -g @atom/ls-plus
lsp --version

# 测试 Cargo 安装
cargo install ls-plus
ls-plus --version
```

### ✅ 平台兼容性
- [ ] Windows 测试
- [ ] macOS 测试  
- [ ] Linux 测试
- [ ] ARM64 测试

### ✅ 功能验证
- [ ] 基本列表功能
- [ ] 颜色输出
- [ ] 图标显示
- [ ] 树形视图
- [ ] Git 集成

## 环境变量设置

在 GitHub Repository Settings → Secrets 中设置：

```
CARGO_REGISTRY_TOKEN=your_crates_io_token
NPM_TOKEN=your_npm_token  
```

## 故障排除

### 构建失败
- 检查 Rust 工具链版本
- 验证依赖项版本兼容性
- 查看 GitHub Actions 日志

### 发布失败
- 验证 API Token 权限
- 检查包名冲突
- 确认版本号格式

### 下载失败
- 验证 GitHub Release 资源
- 检查平台检测逻辑
- 测试网络连接

## 版本策略

- **Patch (0.0.X)**: Bug 修复，向后兼容
- **Minor (0.X.0)**: 新功能，向后兼容
- **Major (X.0.0)**: 破坏性变更

## 回滚计划

如果发布出现问题：

1. **npm 回滚**:
   ```bash
   npm unpublish @atom/ls-plus@version --force
   ```

2. **crates.io 注意**: crates.io 不支持删除，只能发布新版本修复

3. **GitHub Release**: 可在 GitHub 界面删除 Release 和 Tag