前端git约定式规范化提交-commitizen

当使用commitizen进行代码提交时,commitizen会提示你在提交代码时填写所必填的提交字段信息内容。

1、全局安装commitizen

npm install -g commitizen@4.2.4

2、安装并配置 cz-customizeable 插件

2.1 使用 npm 下载 cz-customizeable

npm i  cz-customizeable@6.3.0 --save-dev

2.2 在package.json中添加配置

"config":{
    "commitizen":{
        "path": "node_modules/cz-customizable"
    }
}

3、项目根目录下添加 .cz-config.js 文件

module.exports = {
    // 可选类型
    types: [
        {value: 'feat', name: 'feat:    新功能'},
        {value: 'fix', name: 'fix:    修复'},
        {value: 'docs', name: 'docs:    文档变更'},
        {value: 'style', name: 'style:    代码格式(不影响代码运行的变动)'},
        {
            value: 'refactor',
            name: 'refactor: 重构(既不是增加feature,也不是修复bug)'
        },
        {value: 'perf', name: 'perf:    性能优化'},
        {value: 'test', name: 'test:    增加测试'},
        {value: 'chore', name: 'chore:    构建过程或辅助工具的变动'},
        {value: 'revert', name: 'revert:    回退'},
        {value: 'build', name: 'build:    打包'}
    ],
    
    // 步骤
    messages: {
        type: '请选择提交的类型:',
        customScope: '请输入修改的范围(可选)',
        subject: '请简要描述提交内容(必填)',
        body: '请输入详细描述(可选)',
        footer: '请输入要关闭的issue(可选)',
        confirmCommit: '确认要使用以上信息提交? (y/n)'
    },

    // 跳过步骤
    skipQuestions: ['body', 'footer'],

    // 默认长度为 72
    subjectLimit: 72
}

4、使用 git cz 代替 git commit

使用 git cz 代替 git commit,即可看到提交的提示内容

5、git hooks

5.1 什么是git hooks

当提交的描述信息不符合约定式提交规范时,阻止当前的提交,并抛出对应的错误提示。而要实现这个目的,就需要使用git hooks(git的钩子函数或者是git的回调方法)

git hooks钩子函数非常多,其中用的比较多的,只有两个:

git hook调用时机说明
pre-commitgit commit执行前它不接受任何参数,并且在获取提交日志消息并进行提交之前被调用。脚本git commit以非零状态退出会导致命令在创建提交之前终止。可以用git commit --no-verify 绕过
commit-msggit commit执行前可用于将消息规范化为某种项目标准格式。还可用于在检查消息文件后拒绝提交。可以用git commit --no-verify 绕过

简单来说明这两个钩子:

1、commit-msg:可以用来规范化标准格式,并且可以按需指定是否要拒绝本次提交。

2、pre-commit:会在提交前被调用,并且可以按需指定是否要拒绝本次提交。

5.2 使用husky+commitlint检查提交描述

5.2.1 commitlint:用于检查提交信息

1、安装依赖

npm install --save-dev @commitlint/config-conventional@12.1.4 @commitlint/cli@12.1.4

2、创建 commitlint.config.js 文件

在项目根目录下创建commitlint.config.js文件,在改文件中添加以下配置

module.exports = {
    // 继承的规则
    extends: [
        '@commitlint/config-conventional'
    ],
    // 定义规则类型
    rules: {
        // type 类型定义,表示git提交的type必须在以下类型范围内
        'type-enum':[
            // 当前验证的错误级别
            2,
            // 在什么情况下进行验证
            'always',
            // 泛型内容
            [
                'feat',     // 新功能 feature
                'fix',      // 修复 bug
                'docs',     // 文档注释
                'style',    // 代码格式(不影响代码运行的变动)
                'refactor', // 重构(既不增加新功能,也不是修复bug)
                'perf',     // 性能优化
                'test',     // 增加测试
                'chore',    // 构建过程或辅助工具的变动
                'revert',   // 回退
                'build'     // 打包
            ]
        ],
        // subject 大小写不做校验
        'subject-case': [0]
    }
}

注意:保存文件格式必须为UTF-8的编码格式,否则可能会报错

5.2.2 husky:是git hooks工具

1、安装依赖

npm install husky@7.0.1 --save-dev

2、启动 hooks,生成 .husky 文件夹

npx husky install

3、在package.json中生成 prepare 指令

npm set-script prepare "husky install"

4、执行 prepare 指定

npm run prepare

5、执行成功

6、添加 commitlint 的 hook 到 husky 中,并在 commit-msg 的hooks 下执行以下指令

npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

配置完成后,在使用git commit提交时,若不按规范提交,则直接报错并提示相关错误。

6、通过 pre-commit 提交时检测代码规范

通过 husky 监测 pre-commit 钩子,在该钩子下执行 npx eslint --ext | .js,.vue src指令来去进行相关检测,目的是防止git提交代码时,没有进行代码格式化,没进行eslint格式检查。

1、执行以下命令

npx husky add .husky/pre-commit "npx eslint --ext .js,.vue src"

2、使用lint-staged自动修复格式错误

之前已经通过pre-commit配置方式,使得git commit提交代码时,先对代码eslint格式化校验,校验通过后,才能进行提交,否则提示相关错误。但是这样会存在两个问题:

a) 当只修改个别文件时,没有必要检测所有的文件代码格式

b) 只会提示对应的错误,并不能自动修改,还需手动进行代码修改

lint-staged 只检查本次修改更新的代码,并在出现错误的时候,自动修复并进行推送。

lint-staged 无需单独安装,创建项目时,vue-cli 就已经帮助我们安装过了。只需修改以下配置文件即可。

在package.json文件中添加以下配置:

"lint-staged":{
    "src/**/*.{js,vue}":[
        "eslint --fix",
        "git add"
    ]
}

3、修改 .husky/pre-commit 文件

将npx eslint --ext .js,.vue src 修改为 npx lint-staged

npx lint-staged

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟码神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值