Commitizen

规范化你的 Git 提交信息

简介

在团队协作开发过程中,规范化的 Git 提交信息可以提高代码维护的效率,便于追踪和定位问题。Commitizen 是一个帮助我们规范化 Git 提交信息的工具,它提供了一种交互式的方式来生成符合约定格式的提交信息。

原理

Commitizen 的核心原理是通过提供一个交互式的命令行工具,引导用户按照预定义的格式填写提交信息。它使用了 Node.js 的 Inquirer.js 库来实现命令行交互,根据配置的提交信息模板,生成最终的提交信息。

安装依赖

首先,你需要安装 commitizencz-customizable

npm install --save-dev commitizen cz-customizable

配置 commitizen

package.json 文件中添加以下配置,以便 commitizen 使用 cz-customizable 作为适配器:

{
"scripts": {
"commit": "cz"
},
"config": {
"commitizen": {
"path": "./node_modules/cz-customizable"
}
}
}

创建 .cz-config.js 文件

在项目根目录下创建一个名为 .cz-config.js 的文件,用于自定义提交信息的提示。以下是一个示例配置:

const fs = require('fs')
const path = require('path')
const dirs = fs.readdirSync(path.resolve(__dirname, './src/pages'))
const scopes = dirs.filter(dir => !['.DS_Store', 'index'].includes(dir))

module.exports = {
types: [
{ value: '✨ Features | 新功能', name: '✨ Features | 新功能: 一个新功能' },
{ value: '🐛 Bug Fixes | Bug 修复', name: '🐛 Bug Fixes | Bug 修复: 修复一个Bug' },
{ value: '📝 Documentation | 文档', name: '📝 Documentation | 文档: 变更的只有文档' },
{ value: '💄 Styles | 风格', name: '💄 Styles | 风格: 空格, 分号等格式修复' },
{ value: '♻ Code Refactoring | 代码重构', name: '♻ Code Refactoring | 代码重构: 代码重构,注意和特性、修复区分开' },
{ value: '⚡ Performance Impro3vements | 性能优化', name: '⚡ Performance Improvements | 性能优化: 提升性能' },
{ value: '✅ Tests | 测试', name: '✅ Tests | 测试: 添加一个测试' },
{ value: '🔧 Continuous Integration | CI 配置', name: '🔧 Continuous Integration | CI 配置: 开发工具变动(构建、脚手架工具等)' },
{ value: '⏪ Reverts | 回退', name: '⏪ Reverts | 回退: 代码回退' },
{ value: '🎫 Chores | 其他更新', name: '🎫 Chores | 其他更新: 其他更新' }
],
// 需求取pages下面的目录、其它为other
scopes: [
'other',
...scopes
],
messages: {
type: '选择一种你的提交类型:',
scope: '选择一个scope (可选):',
subject: '短说明:',
confirmCommit: '确定提交commit吗?'
},
subjectLimit: 100,
skipQuestions: ['body', 'breaking', 'footer'] // 简化步骤
};

使用 commitizen 进行提交

现在,你可以使用 commitizen 提供的命令来提交代码:

npm run commit

这个命令将会启动一个交互式提示,指导你填写提交信息,从而确保提交信息符合预定义的规范。

![image-20240702182830619](/Users/zy/Library/Application Support/typora-user-images/image-20240702182830619.png)

通过以上配置,你的项目现在已经集成了 cz-customizablecommitizen,并且使用 commitlinthusky 确保提交信息的格式符合规范。这样可以帮助团队保持一致的提交信息格式,提高代码库的可读性和维护性。

”commitlint-config-cz”: “^0.13.3”, 这个是防止使用其他命令或客户端 push 上去,必须使用以上的规范才可以