前言
在开发中,我们经常需要管理项目版本。版本管理不仅可以方便我们追溯、排错,同时也可以协助团队沟通、提高开发效率。而 Conventional Commits specification 则是一种规范化的提交信息,有利于版本控制和自动生成 changelog。本文将介绍如何使用 npm 包 @nodepack/conventional-changelog 自动生成 changelog。
环境准备
在使用 @nodepack/conventional-changelog 之前,需要确认开发环境已经具备以下条件:
- Node.js 环境
- Git 环境
安装
可以使用 npm 或 yarn 安装 @nodepack/conventional-changelog:
# npm npm install --save-dev @nodepack/conventional-changelog # yarn yarn add --dev @nodepack/conventional-changelog
配置
package.json
打开 package.json,在 scripts 对象中添加一个新的命令:
{ "scripts": { "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0" } }
该命令的具体含义:
conventional-changelog
:命令的名称,由于安装了 @nodepack/conventional-changelog,可以直接使用该命令。-p angular
:使用 Angular 的日志风格(其他风格可参考官方文档),用于解析提交信息。-i CHANGELOG.md
:指定 changelog 文件的路径和文件名。-s -r 0
:对现有 changelog 做更新时,指定从 0.0.0 开始计数。
commit message
在使用 @nodepack/conventional-changelog 前,需要遵循 Conventional Commits specification 规范提交信息。该规范的格式为:
<type>[optional scope]: <description> [optional body] [optional footer]
其中,<type>
为必需,用于描述提交的类型。其余部分为可选项。
常见的 <type>
如下:
feat
: 新功能;fix
: 修复 bug;chore
: 修改构建流程或辅助工具;docs
: 纯文档修改;style
: CSS、建构或格式等样式调整;refactor
: 重构代码;perf
: 性能优化;test
: 添加或修正测试。
具体可参考 官方文档。
husky
我们还可以通过 husky 自动化在每次提交时验证提交信息是否符合规范。husky 需要在本地安装 Git 才能使用。按照以下步骤进行配置:
- 使用 npm 或 yarn 安装 husky。
# npm npm install --save-dev husky # yarn yarn add --dev husky
- 在 package.json 中添加以下配置:
{ "husky": { "hooks": { "commit-msg": "npx --no-install commitlint --edit $HUSKY_GIT_PARAMS" } } }
- 安装 commitlint。
# npm npm install --save-dev @commitlint/cli @commitlint/config-conventional # yarn yarn add --dev @commitlint/cli @commitlint/config-conventional
- 在项目根目录下创建 .commitlintrc.js,内容如下:
module.exports = { extends: ['@commitlint/config-conventional'], };
这样就完成了 husky 和 commitlint 的配置。在每次提交时,commitlint 会对提交信息进行验证。
使用
在完成配置后,即可使用以下命令自动生成 changelog。
npm run changelog
执行后,会自动生成 CHANGELOG.md,如下所示:
-- -------------------- ---- ------- - --------- -- ----- ------------ --- -------- - ----- ---------- ---- -- - --- ------- ---------------------------------------------------------------------------------------------------- -- ----- ------------ --- -------- - ----- ------- ---------- ---- -- ------- ------- ---------------------------------------------------------------------------------------------------- --- --- ----- - ----- ------ ---- -- - ------ ----------------------------------------------------------------------------------------------------
CHANGELOG.md 列出了项目中的版本归档记录。每个版本修订信息都有一个格式化的时间戳,一个相应的版本号和以下条目:
Features
:新功能;Bug Fixes
:修复 bug。
总结
使用 @nodepack/conventional-changelog 自动化生成 changelog,简化了繁琐重复的工作,遵循 Conventional Commits specification,规范提交信息,使版本控制和 changelog 更有利于团队开发和维护。通过 husky 和 commitlint,可以自动化在每次提交时验证提交信息是否符合规范。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671cd30d0927023822918