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

vue项目配置git提交规范

vue项目配置git提交规范

  • 一、背景介绍
  • 二、husky、lint-staged、@commitlint/cli
    • 1.husky
    • 2.lint-staged
    • 3.@commitlint/cli
  • 三、具体使用
    • 1.安装依赖
    • 2.运行初始化脚本
    • 3.在package.json中配置lint-staged
    • 4.根目录新增 commitlint.config.js
  • 4.提交测试
    • 1.提示信息格式错误时
    • 2.eslint校验不通过时

一、背景介绍

项目中代码格式以及git message如果不加以约束,可能最终的格式会五花八门,这样很不利于我们的项目合作。所以我们需要使用工具来约束提交代码和信息的格式。

二、husky、lint-staged、@commitlint/cli

1.husky

Husky 是一个 Git Hook 工具,可以帮助我们在 Git 事件发生时自动运行脚本。Git Hook 是一种机制,它允许在 Git 执行操作时自动运行特定脚本,以执行自定义操作。
使用 Husky,可以轻松地添加 Git Hooks,并在特定的 Git 事件(如提交代码)发生时执行自定义的脚本。例如,在提交代码之前自动运行代码格式化脚本或运行代码静态分析工具等。
Husky 支持多种 Git Hooks,包括 pre-commit、pre-push 等,并可以配置多个钩子,以便在多个 Git 事件发生时执行自定义脚本。

2.lint-staged

lint-staged 是一个工具,可以在 Git 暂存区的文件上运行指定的 lint 工具,以便于仅在需要时执行 lint 检查。它通常与 Husky 配合使用,以在提交代码前运行 lint-staged。使用 lint-staged 可以大大提高 lint 检查的效率,因为只需要针对本次提交的文件执行 lint 检查,而不是所有的文件。
lint-staged 支持多种 lint 工具,例如 ESLint、Prettier、Stylelint 等,并可以配置多个 lint 工具。它还支持使用 glob 模式来选择要运行 lint 工具的文件。

3.@commitlint/cli

@commitlint/cli 是一个命令行工具,用于校验 Git 提交信息是否符合规范。它通常与 Husky 和 lint-staged 配合使用,以在提交代码前对提交信息进行校验,从而确保提交信息的格式和内容符合项目规范和约定。
@commitlint/cli 遵循 Conventional Commits 规范,可以自定义配置校验规则。它支持多种校验规则,例如校验提交信息的类型、描述和主体等,并可以在不同的提交阶段执行不同的校验规则。例如,在提交代码前只检查代码格式和 lint 检查,而在合并代码时进行更全面的提交信息校验。

三、具体使用

1.安装依赖

npm i husky -D
npm i lint-staged -D
npm i @commitlint/cli @commitlint/config-conventional -D
在这里插入图片描述

2.运行初始化脚本

npx husky install :生成 .husky 的文件夹
在这里插入图片描述

npx husky add .husky/pre-commit "npx --no-install lint-staged": 添加 hooks,会在 .husky 目录下生成一个 pre-commit 脚本文件

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"npx --no-install lint-staged

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

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"npx --no-install commitlint --edit $1

3.在package.json中配置lint-staged

lint-staged": {"*.{js,jsx,vue,ts,tsx}": ["eslint --fix","prettier --write"],"*.{scss,less,css,html,md}": ["prettier --write"],"package.json": ["prettier --write"],"{!(package)*.json,.!(browserslist)*rc}": ["prettier --write--parser json"]
},

4.根目录新增 commitlint.config.js

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

提交格式:
git commit -m <type>: <description> // 冒号后面有空格

  • type:提交的类型(如新增、修改、更新等)
  • description:信息描述

4.提交测试

1.提示信息格式错误时

git commit -m '测试提交'
在这里插入图片描述

2.eslint校验不通过时

在这里插入图片描述
提交就会报错了
在这里插入图片描述

http://www.lryc.cn/news/137612.html

相关文章:

  • 影响交叉导轨运行速度的因素有哪些?
  • List转Map
  • ES:一次分片设计问题导致的故障
  • vue 简单实验 自定义组件 综合应用 传参数 循环
  • 【OpenCV实战】2.OpenCV基本数据类型实战
  • MyBatis进阶:告别SQL注入!MyBatis分页与特殊字符的正确使用方式
  • 安装Node(脚手架)
  • R语言10-R语言中的循环结构
  • 【Spring】一次性打包学透 Spring | 阿Q送书第五期
  • 第 7 章 排序算法(4)(插入排序)
  • JavsScript知识框架
  • el-input添加自定义指令只允许输入中文/英文/数字,兼容输入法事件
  • 0基础学习VR全景平台篇 第89篇:智慧眼-安放热点
  • java中用SXSSFWorkbook把多个list数据和单个实体dto导出到excel如何导出到多个sheet页详细实例?(亲测)
  • SpringBoot 01 如何创建 和pom的解析
  • axios详解
  • Docker分布式仓库
  • SQL注入之万能用户名
  • ubuntu20搭建环境使用的一下指令
  • GAN(生成对抗网络)
  • 实时同步ES技术选型:Mysql+Canal+Adapter+ES+Kibana
  • 禅道后台命令执行漏洞
  • 基于Spark+django的国漫推荐系统--计算机毕业设计项目
  • 向量数据库 Milvus:实现高效向量搜索的技术解析
  • 恒运资本:信创概念再度活跃,华是科技再创新高,南天信息等涨停
  • Synchronized锁升级
  • 记一个宏定义写法
  • 【数据结构】C语言实现栈(详细解读)
  • 3、Spring_容器执行
  • 五、pikachu之RCE