天天提交代码,git commit的时候能做哪些校验呢?

简介: 这里提一下其实通过查看commitlint官网可以发现,它的配置方式有好几种的,这里我使用的是第二种,如下图所示,当然你也可以去尝试其他的方式,比如第一种使用也非常的广泛,这里需要承接我的上一篇,开头文章有提到,有需要的可以点击查看。

image.png


大家好,我是 那个曾经的少年回来了。10年前我也曾经年轻过,如今已步入被淘汰的年龄,但如下幡然醒悟,所以活在当下,每天努力一点点,来看看2024年的时候自己会是什么样子吧,2024年的前端又会是什么样子,而2024年的中国乃至全球又会变成什么样子,如果你也有想法,那还不赶紧行动起来。期待是美好的,但是更重要的是要为美好而为之奋斗付诸于行动。


1、前言


在上一篇中,通过一些依赖,最终调用 git cz 来替代 git commit ,并通过 npm scripts 并最终达到规范提交的message。

具体操作的源码项目 github.com/aehyok/taro…


那么本篇就来看看git commit都可以做哪些校验呢?


  • eslint 校验代码是否符合代码规范
  • prettier 格式化代码
  • 拦截校验 git commit 提交的内容
  • 其实还可以执行测试用例等等


2、如何在提交commit做一些校验


2.1、commitlint


安装


pnpm i @commitlint/cli  @commitlint/config-conventional -D 


安装完后,在项目根目录添加commitlint.config.js,并在文件中添加如下配置


module.exports = { extends: ['@commitlint/config-conventional'] }


这里提一下其实通过查看commitlint官网可以发现,它的配置方式有好几种的,这里我使用的是第二种,如下图所示,当然你也可以去尝试其他的方式,比如第一种使用也非常的广泛,这里需要承接我的上一篇,开头文章有提到,有需要的可以点击查看。


image.png


2.2、husky git钩子


husky 是一个可以配置 git 钩子变得更简单的工具。支持所有的git钩子。好像大致有30个左右的钩子,有兴趣的可以去查查,这里我主要使用了两个钩子。


pnpm i husky -D


在package.json中添加


"hu": "husky install"


并在项目根目录的命令行中执行 pnpm hu,执行完毕之后可以在项目中观察到多了一个文件夹 .husky,两个钩子函数, commit-msgpre-commit


image.png


  • commit-msg


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


  • pre-commit


#!/bin/sh
. "$(dirname "$0")/_/husky.sh"


2.3、lint-staged


pnpm i lint-staged -D
npx lint-staged


在package.json中添加


"lint-staged": {
    "*.{js,ts,vue}": [
      "eslint --ext .js,.ts,.vue"
    ],
    "*.{js,ts,md,html,scss}": "prettier --write"
  },


2.4、prettier 、eslint


prettier和eslint相信很多前端都知道这是干什么的,这里我就不进行赘述了,有需要的直接去查一查。这里我列出我在项目中需要安装的其他一些依赖项


"eslint-config-airbnb-base": "^15.0.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-config-taro": "3.3.16",
    "eslint-plugin-import": "^2.25.3",
    "eslint-plugin-prettier": "^4.0.0",


2.5、prettier 配置如下


.prettierrc.js


module.exports = {
  printWidth: 100,
  tabWidth: 2,
  useTabs: false,
  semi: false, // 未尾逗号
  vueIndentScriptAndStyle: true,
  singleQuote: true, // 单引号
  quoteProps: 'as-needed',
  bracketSpacing: true,
  trailingComma: 'none', // 未尾分号
  jsxBracketSameLine: false,
  jsxSingleQuote: false,
  arrowParens: 'always',
  insertPragma: false,
  requirePragma: false,
  proseWrap: 'never',
  htmlWhitespaceSensitivity: 'strict',
  endOfLine: 'lf'
}


2.6、eslint配置


.eslintrc.js


module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true
  },
  extends: ['plugin:vue/essential', 'airbnb-base', 'plugin:prettier/recommended'],
  parserOptions: {
    ecmaVersion: 13,
    parser: '@typescript-eslint/parser',
    sourceType: 'module'
  },
  plugins: ['vue', '@typescript-eslint'],
  rules: {
    semi: 'off', // 结尾分号设置
    'comma-dangle': 'off', // 尾随一个多余的逗号
    'vue/no-multiple-template-root': 'off',
    'vue/require-v-for-key': 'off',
    'no-console': 'off', // console。log可用
    'vue/multi-word-component-names': 'off',
    'import/no-unresolved': 'off',
    'import/extensions': 'off',
    'vue/no-v-model-argument': 'off',
    'vue/no-v-for-template-key': 'off',
    'no-eval': 'off',
    'import/prefer-default-export': 'off',
    'no-undef': 'off',
    'consistent-return': 'off',
    'no-param-reassign': 'off',
    'vue/no-mutating-props': 'off',
    'import/no-extraneous-dependencies': 'off',
    'no-plusplus': 'off' // i++可用
  },
  settings: {}
}


当然还有其他的


3 实际校验


3.1、直接命令行git commit


image.png


这个时候可以发现通过commitlint进行校验,发现我们的commit内容是不规范的,间接的对git commit 进行了规范的校验。


3.2、一个命令一条龙


// package.json中的scripts添加
"git": "git add . && git cz && git push",
//然后执行pnpm git


image.png


  • 选择代码修改类型
  • 输入commit提交内容
  • 再进行eslint代码规范校验
  • 再通过prettier自动格式化代码
  • 如果都校验成功,则开始真正的执行git commit -m
  • 最后一步 git push
  • 开头也说了其实还可以进行很多的事情,比如执行 测试用例 等


4、总结


这一篇其实我讲解了对git commit 提交内容的规范方式 juejin.cn/post/713448… , 紧接着本篇对git commit 提交时可以做的一些校验。如果使用的是github,刚好有发布版本的需求,还可以参考我使用的release-it进行自动化的发版juejin.cn/post/713262… .


不断的折腾我才发现自己的知识面是多么的狭小,越学习感觉要补充的知识就越多,那就不断的来优化自己的知识体系吧。


本文折腾的源码: github.com/aehyok/taro…


我的个人博客:vue.tuokecat.com/blog


我的个人github:github.com/aehyok


我的前端项目:pnpm + monorepo + qiankun + vue3 + vite3 + 工具库、组件库 + 工程化 + 自动化


不断完善中,整体框架都有了


在线预览:vue.tuokecat.com


github源码:github.com/aehyok/vue-…

目录
相关文章
|
2月前
|
开发工具 git
使用Git根据日期进行代码版本切换的方法
通过以上步骤,可以有效地根据日期进行Git代码版本的切换。这种方法在需要回溯历史版本进行bug修复或功能复查时特别有用。Git的灵活性和强大功能使其成为现代软件开发不可或缺的工具之一。
275 103
|
5月前
|
API 开发工具 git
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
238 0
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
|
5月前
|
数据可视化 Java 测试技术
Git Flow 现代实操指南含从代码提交到 CI/CD 全流程的实用技巧与长尾关键词解析 Git Flow
本指南结合现代技术趋势,详解Git Flow工作流,涵盖GitHub Actions自动化、Conventional Commits规范、Gitmoji可视化等内容,助你实现代码到CI/CD的全流程管理,提升团队开发效率与代码质量。
363 2
|
5月前
|
开发工具 git
使用Git下载指定版本或指定commit
使用Git下载指定版本或指定commit
|
6月前
|
存储 人工智能 缓存
Git Commit规范:为什么有些公司要求变更行数限制?·优雅草卓伊凡
Git Commit规范:为什么有些公司要求变更行数限制?·优雅草卓伊凡
249 3
Git Commit规范:为什么有些公司要求变更行数限制?·优雅草卓伊凡
|
7月前
|
JavaScript 前端开发 持续交付
实际工作中 Git Commit 代码提交规范是什么样的?
实际工作中 Git Commit 代码提交规范是什么样的?
450 7
|
7月前
|
网络安全 开发工具 git
Git仓库创建与代码上传指南
本教程介绍了将本地项目推送到远程Git仓库的完整流程,包括初始化本地仓库、添加和提交文件、创建远程仓库、关联远程地址及推送代码。同时,还提供了`.gitignore`配置、分支管理等可选步骤,并针对常见问题(如认证失败、分支不匹配、大文件处理及推送冲突)给出了解决方案。适合初学者快速上手Git版本控制。
|
6月前
|
开发工具 git 索引
如何使用Git的暂存区来管理代码更改?
如何使用Git的暂存区来管理代码更改?
978 0
|
8月前
|
前端开发 开发工具 git
Git报错处理:解决git commit时的lint-staged错误提示。
极好的,你对Git的lint-staged出了一个令人头疼的问题。让我们一起钻研一下,找到一种方法来解决一切。 首先,我们要确定你是在做什么操作时候遇到了问题。lint-staged通常在我们运行 git commit 时启动,它做的工作是在你提交之前运行一些指定的命令检查你的代码。当lint-staged报错,多半是因为检查未通过,或者它试图运行的命令存在问题。 让我们以一种图解的方式来描绘一下这个过程,就像canvas上的画面那样。git正在温柔的将你的修改捆绑起来,准备提交。突然,lint-staged走了出来,并开始盘问着Git,寻找可能的错误。如果lint-staged找到了什么
867 24
|
3月前
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
439 15