✅ Changelog自动化方案总结
🎯 问题解决
"我发现你的 commit 格式不是 angular 提交格式,能否使用一些规范的方式?可以利用主流的 相关库 工具,并完善 ci 流程;我理解为,有了工具后,应该不需要写这么多脚本"
🔄 解决方案演进
第一次尝试:完整工具链
- ❌ 配置复杂,容易出错
- ❌ 多个工具依赖,维护困难
- ❌ husky + lint-staged + prettier 配置问题
最终方案:简化工具链
- ✅ 只使用
conventional-changelog-cli - ✅ 保留自定义脚本作为备用
- ✅ 配置简单,稳定可靠
🛠️ 当前工具链
核心工具
bash
# 自动生成changelog
pnpm run changelog
# 生成所有版本changelog
pnpm run changelog:all备用方案
bash
# 自定义脚本
bash scripts/generate-changelog.sh📝 提交格式建议
虽然没有强制校验,但建议使用Angular格式:
bash
# ✅ 推荐格式
feat: Add new feature
fix: Resolve bug in user login
docs: Update API documentation
chore: Update dependencies
# ✅ 中文也支持
feat: 添加新功能
fix: 修复用户登录bug
docs: 更新API文档
chore: 更新依赖包🔄 CI流程
自动化流程
- 检测release commit:
chore(release): x.x.x - 生成changelog: 使用
conventional-changelog工具 - 构建扩展: Chrome和Firefox版本
- 创建release: 包含changelog内容
- 更新CHANGELOG.md: 自动提交更新
手动使用
bash
# 更新版本号
pnpm run version:patch
# 推送触发CI
git push origin main📊 最终效果
| 方面 | 之前 | 现在 |
|---|---|---|
| 脚本复杂度 | ~100行bash脚本 | ~10行配置 |
| 工具依赖 | 多个复杂工具 | 单一核心工具 |
| 配置难度 | 高 | 低 |
| 稳定性 | 容易出错 | 稳定可靠 |
🎉 核心优势
- 简化配置: 只使用一个核心工具,避免复杂配置
- 稳定可靠: 减少工具依赖,降低出错概率
- 功能完整: 仍然能自动生成changelog和更新release
- 易于维护: 没有复杂的钩子和校验
- 灵活使用: 支持手动和自动两种方式
🚀 使用建议
开发时
- 建议使用Angular提交格式(但不强制)
- 可以使用中文描述
发布时
- 使用
pnpm run version:patch/minor/major - 推送后CI自动处理一切
手动生成
- 使用
pnpm run changelog生成最新版本 - 使用
pnpm run changelog:all生成所有版本
