Skip to content

✅ 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流程

自动化流程

  1. 检测release commit: chore(release): x.x.x
  2. 生成changelog: 使用 conventional-changelog 工具
  3. 构建扩展: Chrome和Firefox版本
  4. 创建release: 包含changelog内容
  5. 更新CHANGELOG.md: 自动提交更新

手动使用

bash
# 更新版本号
pnpm run version:patch

# 推送触发CI
git push origin main

📊 最终效果

方面之前现在
脚本复杂度~100行bash脚本~10行配置
工具依赖多个复杂工具单一核心工具
配置难度
稳定性容易出错稳定可靠

🎉 核心优势

  1. 简化配置: 只使用一个核心工具,避免复杂配置
  2. 稳定可靠: 减少工具依赖,降低出错概率
  3. 功能完整: 仍然能自动生成changelog和更新release
  4. 易于维护: 没有复杂的钩子和校验
  5. 灵活使用: 支持手动和自动两种方式

🚀 使用建议

开发时

  • 建议使用Angular提交格式(但不强制)
  • 可以使用中文描述

发布时

  • 使用 pnpm run version:patch/minor/major
  • 推送后CI自动处理一切

手动生成

  • 使用 pnpm run changelog 生成最新版本
  • 使用 pnpm run changelog:all 生成所有版本

基于 MIT 协议开源