代码提交校验及提交规范的实践方案

代码提交校验

前言

在项目管理中,设置代码提交检查是一个至关重要的环节,其目的在于确保代码质量、提高团队协作效率、预防错误和漏洞,减少潜在的风险。为此我们可以借助一些工具链帮助我们实现自动化代码检查、格式化以及提交校验等。

工具及功能

下面是前端常见的工具及对应功能

工具 功能 代表工具
代码质量检查 提前发现潜在问题和语法错误 ESLint
代码格式化 统一代码风格,避免格式争议 Prettier
自动化校验 提交前检查代码是否符合规范 Husky、lint-staged
开发体验优化 提供即时反馈,保存时自动修复问题 VS Code 插件

对于代码的质量检查和格式化相比大家都比较熟悉,这里只介绍代码的自动化校验。

Husky和lint-staged介绍

在前端开发中,Husky和lint-staged是两个非常重要的工具,它们通常被一起使用来确保代码的质量和一致性。

Husky

Husky是一个Git Hook工具,它允许开发者在Git命令执行前后运行自定义脚本。通过Husky,开发者可以轻松地添加Git Hooks,并在特定的Git事件(如提交代码)发生时执行自定义的脚本。

lint-staged

lint-staged是一个在Git暂存文件上运行linters的工具。它可以在提交代码之前确保代码质量,避免不符合规范的代码进入代码库。lint-staged只关注改动的文件,提高lint速度,并防止不符合代码规范的代码提交到仓库。

配置Husky和lint-staged

安装依赖

npm install husky lint-staged @commitlint/cli @commitlint/config-conventional -D

安装完成后在package.json中可以查看安装的版本,这里安装的@commitlint/cli @commitlint/config-conventional 后面会用到,在后面会进行解释。

husky初始化

npx husky init

初始化完成后会生成一个.husky文件,同时在文件的下面有一个pre-commit文件,初始化的内容是npm test,这里的pre-commit文件是husky提供的一个定义 git 钩子的文件,这些钩子会在执行git commit命令时自动运行。

删除原来的 npm test ,同时添加 npx lint-staged ,这是为了在git commit 的时候运行 lint-staged,所以接下来配置 lint-staged

配置lint-staged

在package.json文件中进行如下的配置

js 复制代码
{
  "script": {
    "prepare": "husky",
    "lint-staged": "lint-staged",
  },
  "lint-staged": {  
    "*.{js,jsx,ts,tsx,vue}": ["eslint --fix", "prettier --write"],
    "*.css": ["stylelint --fix"], 
    "*.md": ["prettier --write"]
  }
}

上述的配置实现了针对不同文件类型运行不同的工具:

  1. eslint --fix:自动修复 ESLint 能处理的问题。
  2. prettier --write:自动格式化代码。
  3. stylelint --fix(可选):处理 CSS 样式问题。

解释:这里需要解释下 prepareprepare 是 NPM 的一个特殊生命周期脚本,它会在以下场景自动执行:1. 安装依赖时(运行 npm install)。2.发布包时(运行 npm publish)。如果不添加 prepare 脚本,团队中的其他开发者在拉取代码后,需要手动运行 npx husky install 才能激活 Husky 钩子。通过 prepare,可以省略这一步。

代码提交测试

在user文件下新建一个vue文件,并写一段错误的代码,并提交到仓库,这个时候会校验提交不通过,如下:

删除错误代码,再次提交,显示提交成功。

代码提交规范

前言

在代码的提交过程中怎么保证代码提交的规范性,比如这样的代码提交 git commit -m 'update',明显不符合规范,其他的开发者并不知道提交的信息是更新那部分内容。这个时候可以借助@commitlint/cli 和 @commitlint/config-conventional对提交的内容描述进行一些限制。让提交更加规范。

@commitlint/cli 和 @commitlint/config-conventional介绍

@commitlint/cli

@commitlint/cli 用于校验 Git 提交信息是否符合规范。它通常与 Husky(一个 Git Hook 工具)和 lint-staged(一个在 Git 暂存区的文件上运行指定的 lint 工具)配合使用,以在提交代码前对提交信息进行校验,从而确保提交信息的格式和内容符合项目规范和约定。

@commitlint/config-conventional

@commitlint/config-conventional提供了一种标准化的提交规范。当使用 @commitlint/cli 进行提交信息校验时,可以引用此配置文件来确保提交信息符合既定的规范。包含了常见的提交类型,如 feat(新功能)、fix(修复 bug)、docs(文档修改)等,以及对应的描述和格式要求。

项目中的配置

第一步:在项目根目录下新建一个.commitlintrc.cjs文件,并添加以下内容。

js 复制代码
// https://www.npmjs.com/package/@commitlint/config-conventional
// [
//   'build',
//   'chore',
//   'ci',
//   'docs',
//   'feat',
//   'fix',
//   'perf',
//   'refactor',
//   'revert',
//   'style',
//   'test'
// ];
module.exports = {
  extends: ['@commitlint/config-conventional']
};

第二步:在 .husky 的目录下创建一个 commit-msg 文件,在文件中添加以下内容: npx --no -- commitlint --edit ${1}

代码提交测试

配置完成后还是刚才的文件,执行命令 git commit -m 'update'的时候就会提示添加的提交信息不规范。

使用 git commit -m 'test: 提交测试'的格式提交成功(值得注意的是:后面有一个空格)

文档介绍

相关推荐
liuyouzhang2 小时前
将基于Archery的web数据库审计查询平台封装为jdbc接口的可行性研究(基于AI)
前端·数据库
byoass5 小时前
企业云盘文件预览技术深度剖析:从10种常见格式到渲染架构实战
网络·安全·架构·云计算
kanhao1006 小时前
DPU 架构扩展与 DPU-only 测评操作指南
架构
码事漫谈7 小时前
大模型输出的“隐性结构塌缩”问题及对策
前端·后端
这儿有一堆花8 小时前
前端三件套真的落后了吗?揭开现代 Web 开发的底层逻辑
前端·javascript·css·html5
.Cnn8 小时前
JavaScript 前端基础笔记(网页交互核心)
前端·javascript·笔记·交互
醉酒的李白、9 小时前
Vue3 组件通信本质:Props 下发,Emits 回传
前端·javascript·vue.js
anOnion9 小时前
构建无障碍组件之Window Splitter Pattern
前端·html·交互设计
NotFound4869 小时前
实战分享Python爬虫,如何实现高效解析 Web of Science 文献数据并导出 CSV
前端·爬虫·python
SmartBrain9 小时前
基于 Spring AI + Skill 工程 + MCP 技术方案研究
人工智能·spring·架构·aigc