commitlint-circle 是一个基于 commitlint 的 npm 包,它可以帮助我们在 CircleCI 中自动校验 commit message。在前端开发中,我们经常使用 git 进行代码版本控制,而正确的 commit message 格式可以提高代码管理效率,对于团队协作也非常重要。本文将介绍如何使用 commitlint-circle 进行 commit message 自动生成和自动校验,提高我们的开发效率和代码质量。
什么是 commitlint-circle
commitlint-circle 是一个自动化 commit message 校验工具,它依赖于 commitlint 实现 commit message 的规范化。这个工具可以通过配置实现自动化校验 commit message,并将校验结果反馈给 CircleCI。
commitlint 的使用
首先,我们需要安装 commitlint,使用 npm 进行安装:
npm i -D @commitlint/cli @commitlint/config-conventional
安装完成后,我们需要在项目根目录下创建一个名为 commitlint.config.js 的文件,并将下列代码复制到文件中:
module.exports = { extends: ['@commitlint/config-conventional'], };
这个文件内容定义了我们对 commitlint 的配置,extends 中的 '@commitlint/config-conventional' 是 commitlint 提供的一种常用规范。
接下来,我们可以在终端输入下列命令测试一下 commitlint 是否工作正常:
echo "test" | commitlint
如果返回的结果中包含 "1 problem",则说明 commitlint 工作正常。
commitlint-circle 的使用
接下来我们讲解如何使用 commitlint-circle 进行自动化校验。
首先,我们同样需要安装 commitlint-circle:
npm i -D @commitlint/circle
在项目根目录下创建 .circleci 目录,并创建 config.yml 文件。简单的配置文件如下:
-- -------------------- ---- ------- -------- - ----- ----- ------- - ------ ---------------- ------ - -------- - ---- --- ------- - ---- --- --- ----
这个文件中定义了 CircleCI 的配置,当 push 或 pull request 时,CircleCI 会根据这个文件的配置进行构建操作。其中 npm run lint 的执行命令可以自己定义,当执行这个命令时,会自动执行 commitlint-circle 进行 commit message 校验。
在这之前,我们需要重新定义一下 package.json 函数,增加 lint 命令:
-- -------------------- ---- ------- - ---------- - -------- ----- -------- ------- ----- -------- -- ---- ----------- -- ---- --- ------- ------------------- -- ------------------ - ------------------ --------- ---------------------------------- --------- --------------------- -------- - -
Commit message 校验需要在已经提交的 commit 中进行,这样 CircleCI 才能获取到最近的 commit message 进行校验。
现在我们可以进行一下测试了,输入下列命令进行提交:
git commit -m "feat: 新增功能"
接下来,我们在 GitHub 中 push 这次提交,并访问 CircleCI 的运行日志,如果出现 commitlint-circle 的运行结果,说明自动化校验工作正常。
结语
通过使用 commitlint 和 commitlint-circle,我们可以在项目中任何地方进行 commit message 校验,提高代码管理效率和团队协作效率。希望本文对大家了解 commitlint-circle 的使用方法有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/commitlint-circle