React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint

这篇具有很好参考价值的文章主要介绍了React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint

前言

团队开发的成员越来越多,项目都是由多个人进行开发和维护,每个人的代码书写习惯和风格又不尽相同,commit 的提交log 也是乱七八糟,为以后的开发和维护增添了很多困难,所以规范和约束在多人协作下,就显得尤为重要。

本文将以React 项目为例,在项目中配置 eslint + pretttier + husky + commitLint 代码提交规范

1、创建项目

npx create-react-app my-app --template typescript

完成之后如下图这个样子

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

2、配置 Eslint

2.1 安装依赖包

pnpm install eslint -D

2.2 安装成后 生成配置文件

// 按指示一路回车即可 
npx eslint --init 

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

2.3 配置.eslintrc.js, 直接用下方的eslintrc替换自动生成的即可,可避免很多坑

这里会出现一个 ‘module’ is not defined报错所以在配置中加入 node: true

module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true, // 解决 'module' is not defined报错。
  },
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:react/recommended',
  ],
  overrides: [
    {
      env: {
        node: true,
      },
      files: ['.eslintrc.{js,cjs}'],
      parserOptions: {
        sourceType: 'script',
      },
    },
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaVersion: 'latest',
    sourceType: 'module',
  },
  plugins: ['@typescript-eslint', 'react'],
  rules: {},
};

2.4 使用eslint命令,在package的script中添加,fix表示可自动修复简单的问题。

"scripts": {
   "lint": "eslint --fix \"./src/**/*.{js,jsx,ts,tsx}\""
}

OK,到这里,我们可以先来测试一下,写一行未使用的代码,执行 npm run lint,然后就可以看到如下报错,提示userName 未引用

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

2.5 设置忽略文件 .eslintignore

dist/*
node_modules/*
*.json
public

3、配置 prettier 格式化代码

3.1 安装依赖装包

pnpm install prettier -D

3.2 安装 Prettier - Code formatter 插件

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

3.3 配置.prettierrc.js文件

重启 vscode 后,我们在 .prettierrc.js 文件中配置的代码风格才会生效

module.exports = {
  // 一行的字符数,如果超过会进行换行,默认为80
  printWidth: 100,
  // 行位是否使用分号,默认为true
  semi: true,
  // 字符串是否使用单引号,默认为false,使用双引号
  singleQuote: true,
  // 一个tab代表几个空格数,默认为2
  tabWidth: 2,
  // 是否使用尾逗号,有三个可选值"<none|es5|all>"
  trailingComma: "none",
};

packages.json 中的 script 配置命令

  "scripts": {
    "format": "prettier --write \"src/**/*.+(js|ts|jsx|tsx)\"",
  }

运行该命令,会将我们项目中的文件都格式化一遍,后续如果添加其他格式的文件,可在该命令中添加,例如:.less后缀的文件

3.4、设置 .prettierignore 忽略文件

node_modules/**
dist/**
public/**
doc/**

3.5、解决ESLintPrettier的冲突

ESLint

  • 目的:ESLint 主要用于发现代码中的问题,如潜在的错误、不一致的编码风格、未使用的变量等。
  • 可配置性:ESLint 允许自定义规则,使其可以强制实施特定的编码标准和最佳实践。

Prettier

  • 目的:Prettier 主要用于自动格式化代码,以保持代码风格的一致性。
  • 风格规则:Prettier 有一套默认的风格规则,例如缩进、行宽、引号等,并且这些规则不太可配置。

冲突原因

  • 冲突通常发生在两个工具对某些代码风格规则有不同的处理方式。例如,ESLint 可能要求使用单引号,而 Prettier 默认使用双引号。
  • 当这两个工具同时运行时,它们可能会对代码的同一部分提出不同的修改建议,从而造成冲突。

安装依赖包

pnpm install eslint-config-prettier eslint-plugin-prettier -D

eslint-config-prettier 基于 prettier 代码风格的 eslint 规则,即eslint使用pretter规则来格式化代码。

eslint-plugin-prettier 禁用所有与格式相关的 eslint 规则,解决 prettier 与 eslint 规则冲突,确保将其放在 extends 队列最后,这样它将覆盖其他配置

3.6 增加 .vscode 配置 settings.json 自动完成格式化

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

// settings.json
{
  // 保存的时候自动格式化
  "editor.formatOnSave": true,
  // 默认格式化工具选择prettier
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}

配置完成之后,我们保存代码的时候就可以自动完格式化了

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

4、配置 husky

4.1、安装并初始化husky

// 初始化husky。 
// 1将prepare脚本添加到package 
// 2、根目录创建.husky文件夹,包含pre-commit钩子
pnpm install husky -D

npx husky-init

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

4.2 安装并配置lint-staged

只检查通过git add添加到暂存区的文件,避免每次检查都把整个项目的代码都检查一遍,从而提高效率

pnpm install lint-staged -D

4.3 配置packages.json 命令

// 设置lint-staged;提交时prettier代码格式化,eslint检查修复
{
  "lint-staged": {
    "**/*.{js,jsx,ts,tsx}": "npm run lint",
    "**/*.{js,jsx,tsx,ts,less,md,json}": [
      "prettier --write",
      "eslint --fix"
    ]
  },
}

4.4 修改.husky/pre-commit文件,使提交时能执行lint-staged钩子

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

pnpm exec lint-staged

// 删除npm test

5、 配置 commit-msg

commitlint 检查提交消息是否符合常规提交格式,用于在每次提交时生成符合规范的commit消息。

5.1 安装commit-msg

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

5.2 添加 commitlint.config.js 配置文件

module.exports = {
  extends: ["@commitlint/config-conventional"],
  rules: {
    // type 类型定义
    "type-enum": [
      2,
      "always",
      [
        "feat", // 新功能 feature
        "fix", // 修复 bug
        "docs", // 文档注释
        "style", // 代码格式(不影响代码运行的变动)
        "refactor", // 重构(既不增加新功能,也不是修复bug)
        "perf", // 性能优化
        "test", // 增加测试
        "chore", // 构建过程或辅助工具的变动
        "revert", // 回退
        "build", // 打包
      ],
    ],
    // subject 大小写不做校验
    // 自动部署的BUILD ROBOT的commit信息大写,以作区别
    "subject-case": [0],
  },
};

@commitlint/config-conventional 这是一个规范配置,标识采用什么规范来执行消息校验, 这个默认是Angular的提交规范

类型 描述
build 编译相关的修改,例如发布版本、对项目构建或者依赖的改动
chore 其他修改, 比如改变构建流程、或者增加依赖库、工具等
docs 文档修改
ci 持续集成修改
feat 新特性、新功能
fix bug修复
perf 优化相关,比如提升性能、体验
refactor 代码重构
revert 回滚上一个版本
style 代码格式修改, 注意不是 css 修改
test 测试用例修改|

5.3 执行以下命令添加commitlint钩子

npx husky add .husky/commit-msg "npm run commitlint"

5.4 在packages.json 配置

 "scripts": {
    "commitlint": "commitlint --config commitlint.config.js -e -V"
  },

按上面步骤修改完,我们在提交代码时候,如果随便写一个提交message将会报错,不允许提交,如下所示:

试试提交代码

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

5.5 正常提交

git commit -m 'feat: 测试一下'

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

6、自定义代码提交规则

自定义提交规则可以根据团队开发规范来进行额外配置,目前我所在的团队提交规则是,会把每个需求的产品文档链接关联到每一个feature,这样后续要是有问题,也方便找到对应的产品文档.

配置如下

主要就增加了plugin 和 三个rule 规则

'must-add-document-url": [2, "always"]', // 加入自定义规则
'body-max-line-length': [2, 'always', 200], // body最大内容行数
'header-max-length': [2, 'always', 200], // header 最大长度
module.exports = {
 extends: ["@commitlint/config-conventional"],
 rules: {
   // type 类型定义
   "type-enum": [
     2,
     "always",
     [
       "feat", // 新功能、新特性feature
       "fix", // 修复 bug
       "docs", // 文档修改
       "style", // 代码格式(不影响代码运行的变动)
       "refactor", // 代码重构
       "perf", // 优化相关,比如提升性能、体验
       "test", // 测试用例修改
       "chore", // 其他修改, 比如改变构建流程、或者增加依赖库、工具等
       "revert", // 回滚上一个版本
       "build", // 编译相关的修改,例如发布版本、对项目构建或者依赖的改动
     ],
   ],
   // subject 大小写不做校验
   // 自动部署的BUILD ROBOT的commit信息大写,以作区别
   "subject-case": [0],
   "must-add-document-url": [2, "always"], // 加入自定义规则
   'body-max-line-length': [2, 'always', 200], // 加入自定义规则
   'header-max-length': [2, 'always', 200], // 加入自定义规则
 },
 plugins: [
   {
     rules: {
       "must-add-document-url": ({ type, body }) => {
         const ALIYUN_DOCUMENT_PREFIX = "https://devops.aliyun.com";

         // 排除的类型
         const excludeTypes = ["chore", "refactor", "style", "test"];
         if (excludeTypes.includes(type)) {
           return [true];
         }

         return [
           body && body.includes(ALIYUN_DOCUMENT_PREFIX),
           `提交的内容中必须包含云效相关文档地址`,
         ];
       },
     },
   },
 ],
};

然后再来测试一下

git commit -m "feat: 测试自定义提交规则",然后就提示需要云效的文档链接

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

正确提交

feat: 测试自定义提交规则 |

https://devops.aliyun.com/xxxxxx

正常提交上来了

React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint,react.js,前端,代码规范

7、总结

本文从实战出发,为一个React 项目添加了eslint + prettier + husky + lint-staged项目规范以保证项目的质量、统一格式、风格。希望大家能从中学到知识。代码已经上传到github上, 点击这里即可查看。

如果你觉得本文对你有些许帮助的话,记得点个赞哦👍!🌹

原文 https://juejin.cn/post/7353208973880344626

参考文章

# 代码提交规范-ESLint+Prettier+husky+Commitlint

commitlint 从0到1 (git commit 校验工具)文章来源地址https://www.toymoban.com/news/detail-852011.html

到了这里,关于React 项目配置代码提交规范 ESLint、Pretttier、Husky、CommitLint的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建React项目,基于Vite+React+TS+ESLint+Prettier+Husky+Commitlint

    node: 20.10.0 安装包管理器pnpm 基于Vite创建项目 进入项目目录安装依赖 启动项目 1、初始化ESLint 按下图结果进行初始化选择: 按需选择完配置后,选择立即安装,就可一键安装相关依赖。安装成功后 ESLint 帮我们创建了 .eslintrc.cjs 配置文件(cjs 是指 CommonJS 格式)。 2、在项目

    2024年02月04日
    浏览(65)
  • React框架创建项目详细流程-项目的基本配置-项目的代码规范

    项目规范 项目规范: 在项目中都会有一些开发规范和代码风格, 下面介绍一下我采用的规范与风格 文件夹、文件名称统一小写、多个单词以连接符(-)连接, 组件采用大驼峰; JavaScript变量名称采用小驼峰标识,常量全部使用大写字母; CSS采用普通CSS和styled-component结合来编写(全局

    2024年01月16日
    浏览(74)
  • 第二章 React项目配置ESlint和Prettier实现自动格式化代码以及统一代码风格

    欢迎加入本专栏!本专栏将引领您快速上手React,让我们一起放弃放弃的念头,开始学习之旅吧!我们将从搭建React项目开始,逐步深入讲解最核心的hooks,以及React路由、请求、组件封装以及UI(Ant Design)框架的使用。让我们一起掌握React,开启前端开发的全新篇章! 需要准

    2024年02月03日
    浏览(74)
  • 配置 Git Husky 代码提交约束

    Git Husky 是一个可以管理 Git Hooks 的工具,它可以帮助我们在代码提交的时候运行脚本,以确保代码提交符合特定的规范和约定。 在 Git 中,允许在操作特定的事件时执行特定的脚本,这些事件我们称之为 Hooks 。 Git Husky 利用这些 Hooks 实现了在代码提交前、提交信息规范校验等

    2024年02月03日
    浏览(53)
  • 项目git commit时卡主不良代码:husky让Git检查代码规范化工作

    看完 《前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) 前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) - Yellow_ice - 博客园》,再次修改本文 团队人一多,提交一多,还是要对备注加以区分,好快速找到变更点。这时候就需要对每次提交,需要输入message,对提交

    2024年02月03日
    浏览(133)
  • 【vue3-element-admin】Husky + Lint-staged + Commitlint + Commitizen + cz-git 配置 Git 提交规范

    本文介绍 vue3-element-admin 如何通过 Husky + Lint-staged + Commitlint + Commitizen + cz-git 来配置 Git 提交代码规范。 核心内容是配置 Husky 的 pre-commit 和 commit-msg 两个钩子: pre-commit :Husky + Lint-staged 整合实现 Git 提交前代码规范检测/格式化 (前提:ESlint + Prettier + Stylelint 代码统一规范);

    2023年04月17日
    浏览(122)
  • 前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码

    最简单的两种方式: 使用 prettier + git pre-commit 使用 prettier + husky(原理和第一种一模一样哦) git hooks 下图为git hooks的官方示例,以.sample结尾。注意这些以.sample结尾的示例脚本是不会执行的,重命名后会生效 是一些自定义的脚本,用于控制git工作的流程,分为客户端钩子和服务

    2024年02月04日
    浏览(79)
  • vue重修之自定义项目、ESLint和代码规范修复

    安装脚手架 (已安装) 创建项目 选项 手动选择功能 选择vue的版本 是否使用history模式 选择css预处理 选择eslint的风格 (eslint 代码规范的检验工具,检验代码是否符合规范) 选择校验的时机 (直接回车) 选择配置文件的生成方式 (直接回车) 是否保存预设,下次直接使用?

    2024年02月07日
    浏览(44)
  • 从0搭建Vue3组件库(十三):引入Husky规范git提交

    虽然我们项目中引入了 prettier 和 eslint 对代码格式进行了校验,但是多人开发的时候难免依然会有人提交不符合规范的代码到仓库中,如果我们拉取到这种代码还得慢慢对其进行修改,这是一件很麻烦的事情,同时也为了避免团队成员提交五花八门message,因此我们可以引入 husky 来从

    2024年02月07日
    浏览(52)
  • Vue3+Vite项目配置husky、stylelint、commitlint,实现git提交前代码校验

    做什么:本文将从零开始带你配置 husky 、 stylelint ,完成代码提交git前的强制校验,保证代码风格和一致性 技术栈:Vue3 + TypeScript + Vite 1.1 node.js v16.0.0 及以上 (我 v16.14.1) 1.2 pnpm v8.0.0 及以上(我 v8.6.6) 2.1 安装 pnpm 2.2 创建项目-不多赘述 3.1 安装 eslint 3.2 生成eslint配置文件

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包