当前位置: 首页 > news >正文

前端代码风格自动化系列(二)之Commitlint

在有了Husky赋能之后,我们有能力在Git的钩子里做一些事情,首先不得不提的是代码的提交规范和规范的校验,优雅的提交,方便团队协作和快速定位问题。首推Commitlint,另外@加神 推荐了Gitmoji也是一个很有意思的工具。

安装

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

// 生成配置文件commitlint.config.js,当然也可以是 .commitlintrc.js
echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js

配置

在husky的配置加入CommitlIint配置,v1.0.1版本以后为HUSKY_GIT_PARAMSv0.14.3GIT_PARAMS

"husky": {
    "hooks": {
      "pre-commit": "npm run test",
      "commit-msg": "commitlint -e $HUSKY_GIT_PARAMS"
    }
  },

定制提交规范

提交格式(注意冒号后面有空格)

<type>: <subject>

常用的type类别

  • upd:更新某功能(不是 feat, 不是 fix)
  • feat:新功能(feature)
  • fix:修补bug
  • docs:文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动

例子:

git commit -m 'feat: 增加 xxx 功能'
git commit -m 'bug: 修复 xxx 功能'

subject

subject是 commit 目的的简短描述,可以做一些配置,如最大长度限制。

commitlint.config.js文件配置

rule配置说明::rule由name和配置数组组成,如:'name:[0, 'always', 72]',数组中第一位为level,可选0,1,2,0为disable,1为warning,2为error,第二位为应用与否,可选always|never,第三位该rule的值。具体配置例子如下:

module.exports = {
  extends: [
    "@commitlint/config-conventional"
  ],
  rules: {
    'type-enum': [2, 'always', [
      'upd', 'feat', 'fix', 'refactor', 'docs', 'chore', 'style', 'revert'
     ]],
    'type-case': [0],
    'type-empty': [0],
    'scope-empty': [0],
    'scope-case': [0],
    'subject-full-stop': [0, 'never'],
    'subject-case': [0, 'never'],
    'header-max-length': [0, 'always', 72]
  }
};

这里列出了大部分常用的配置,其它的可以参考Commitlint网站,具体使用例子:

图片描述

这里我们使用错误的提交方式,最上面的是自动测试的脚本,大家可以忽略,husky给出了commit-msg的input为xxx,触发了subject-emptytype-empty两个规则,提交不符合规范,被拦了下来。如果是正确的提交,例子如下:

图片描述

关于Commitlint的使用就到这里了。

相关文章:

  • SharePoint 2013 Designer 入门教程
  • SparkStreaming的实战案例
  • const let
  • 冷启动问题:如何构建你的机器学习组合?
  • hive报错 Another instance of Derby may have already booted the database
  • iOS应用审核的通关秘籍【转】
  • QTP常用功能
  • TCP三次握手
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • Windows和Linux环境下Memcached安装与配置(转)
  • 如何给wordpress首页自动显示文章内容的第一个图片
  • Azure Automation (3) 定期将某个Azure订阅下的所有虚拟机开关机
  • haslayout
  • python练习程序(批量重命名)
  • 国标电表DLT645转MODBUS TCP协议转换器MRD-5021,工业设备,浪涌三级保护MRD
  • 0基础学习移动端适配
  • Bootstrap JS插件Alert源码分析
  • C语言笔记(第一章:C语言编程)
  • Java多线程(4):使用线程池执行定时任务
  • mac修复ab及siege安装
  • PHP 7 修改了什么呢 -- 2
  • Redux 中间件分析
  • windows下使用nginx调试简介
  • 基于 Babel 的 npm 包最小化设置
  • 如何合理的规划jvm性能调优
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • zabbix3.2监控linux磁盘IO
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (06)金属布线——为半导体注入生命的连接
  • (30)数组元素和与数字和的绝对差
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (七)Java对象在Hibernate持久化层的状态
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)(官方)UE4--图像编程----着色器开发
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET Project Open Day(2011.11.13)
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • []sim300 GPRS数据收发程序
  • [AutoSar]BSW_Com02 PDU详解
  • [BZOJ3757] 苹果树
  • [bzoj4240] 有趣的家庭菜园
  • [E链表] lc83. 删除排序链表中的重复元素(单链表+模拟)
  • [Flexbox] Using order to rearrange flexbox children
  • [LeetCode]—Simplify Path 简化路径表达式