无需登录 数据私有 本地保存

CHANGELOG 生成器 - 基于约定式提交自动编写变更日志

66
0
0
0
约定式提交 (Conventional Commits)

一种标准化的提交信息格式规范,其基本结构为 type[scope]: description。type 表示变更类型(如 feat、fix),scope 为可选的影响范围,description 为变更描述。该规范由 Angular 团队率先推广,现已成为开源社区广泛采用的标准。本工具的核心功能就是解析这种格式的提交信息并自动生成变更日志。

语义化版本 (Semantic Versioning)

版本号格式为 MAJOR.MINOR.PATCH 的版本管理规范。MAJOR 表示不兼容的 API 修改,MINOR 表示向下兼容的功能新增,PATCH 表示向下兼容的 Bug 修复。结合约定式提交,可以根据提交类型自动判断版本号应当如何递增,确保版本号准确反映变更的性质和影响范围。

Keep a Changelog

一种被广泛采用的变更日志编写规范,定义了变更日志的标准结构和分类方式。该规范将变更分为 Added(新增)、Changed(变更)、Deprecated(弃用)、Removed(移除)、Fixed(修复)和 Security(安全)六个类别。遵循此规范可以确保变更日志的一致性和可读性,本工具的 Keep a Changelog 输出格式即遵循该标准。

破坏性变更 (Breaking Change)

指新版本与之前版本不兼容的变更。在约定式提交中,可通过两种方式标记:一是在类型后添加感叹号(如 feat!: 重构 API),二是在提交信息的 footer 中包含 BREAKING CHANGE: 声明。破坏性变更意味着需要升级主版本号,本工具会自动识别并单独归类这类重要变更。

CHANGELOG

变更日志文件,通常命名为 CHANGELOG.md,位于项目根目录。它是记录项目每个版本中所有显著变更的文档,帮助用户和开发者了解版本演进历史。一份良好的变更日志应当按时间倒序排列版本,每个版本下列出各类变更的详细说明。本工具的最终输出就是标准的 CHANGELOG 内容。

Release Notes

发布说明,通常发布在 GitHub Releases 或类似平台上。与 CHANGELOG 面向开发者不同,Release Notes 更倾向于面向最终用户,突出新功能和重要修复,语言更加通俗易懂。两者可以互补使用,CHANGELOG 提供完整的技术变更记录,Release Notes 提供用户友好的版本摘要。

自动化版本管理工具

围绕约定式提交构建的自动化工具生态,包括 commitlint(校验提交信息规范)、husky(Git hooks 管理)、standard-version(自动版本升级和 CHANGELOG 生成)、semantic-release(全自动版本发布)和 commitizen(交互式提交信息编写)。这些工具可以与本工具配合使用,实现从提交到发布的全流程自动化。

Scope(作用范围)

约定式提交中可选的作用范围标记,用于标识变更影响的具体模块或组件。格式为括号内的名称,如 feat(auth): 添加 OAuth 登录 中的 auth 表示认证模块。Scope 帮助开发者快速定位变更所属的子系统,在大型项目中尤为重要。本工具在解析提交信息时会保留并展示 scope 信息。