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

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


代码提交规范-ESLint+Prettier+husky+Commitlint,前端,代码规范

先看下思维导图分析

代码提交规范-ESLint+Prettier+husky+Commitlint,前端,代码规范

配置eslint (3步)

  1. 装包配置.eslintrc.js
  2. 配置忽略文件
  3. 运行

详细讲解
以react 项目为例

// 1.装包
yarn add eslint -D

// 2.生成配置文件(按指示一路回车即可) 
// 相关选项可看下方结果
npx eslint --init

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

// 4.使用eslint命令 
// 在package的script中添加,fix表示可自动修复简单的问题。
"scripts": {
  "lint": "eslint --fix src/**/*.{js,jsx,ts,tsx}",
}

// 运行 yarn lint 即可检查代码质量
  1. 配置文件 eslintrc文件
    根目录/.eslintrc.js
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"
    ],
    "globals": {
        "Atomics": "readonly",
        "SharedArrayBuffer": "readonly",
        "process": true, // 排除对process的报错
    },
    rules: {
        semi: ['error', 'always'], // 该规则强制使用一致的分号
        "react/prop-types": "off", // 处理解构的报错
        'no-unused-vars': 'off', // 禁止未使用过的变量
        '@typescript-eslint/no-unused-vars': 'off',
        'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', //生产环境禁用 debugger
        'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', //生产环境禁用 console
        'default-case': ['warn', { commentPattern: '^no default$' }], //要求 Switch 语句中有 Default
        'dot-location': ['warn', 'property'], // 强制在点号之前或之后换行
        eqeqeq: ['error', 'allow-null'], //要求使用 === 和 !==
        'new-parens': 'warn', //要求调用无参构造函数时带括号
        'no-caller': 'error', // 禁用 caller 或 callee
        'no-const-assign': 'error', //不允许改变用 const 声明的变量
        'no-dupe-args': 'error', //禁止在 function 定义中出现重复的参数
        'no-dupe-class-members': 'error', //不允许类成员中有重复的名称
        'no-dupe-keys': 'warn', //禁止在对象字面量中出现重复的键
        'no-extend-native': 'warn', //禁止扩展原生对象
        'no-extra-bind': 'warn', //禁止不必要的函数绑定
        'no-fallthrough': 'error', //禁止 case 语句落空
        'no-func-assign': 'warn', //禁止对 function 声明重新赋值
        'no-implied-eval': 'error', //禁用隐式的 eval()
        'no-label-var': 'error', //禁用与变量同名的标签
        'no-loop-func': 'error', //禁止循环中存在函数
        'no-mixed-operators': [
            'warn',
            {
                groups: [
                    ['&', '|', '^', '~', '<<', '>>', '>>>'],
                    ['==', '!=', '===', '!==', '>', '>=', '<', '<='],
                    ['&&', '||'],
                    ['in', 'instanceof'],
                ],
                allowSamePrecedence: false,
            },
        ], //禁止混合使用不同的操作符
        'no-multi-str': 'warn', //禁止多行字符串 (需要多行时用\n)
        'no-native-reassign': 'warn', //禁止重新分配本地对象
        'no-obj-calls': 'warn', //禁止将全局对象当作函数进行调用
        'no-redeclare': 'error', //禁止重新声明变量
        'no-script-url': 'warn', //禁用 Script URL
        'no-shadow-restricted-names': 'warn', //关键字不能被遮蔽
        'no-sparse-arrays': 'warn', //禁用稀疏数组
        'no-this-before-super': 'warn', //在构造函数中禁止在调用 super()之前使用 this 或 super
        'no-undef': 'error', //禁用未声明的变量
        'no-unexpected-multiline': 'warn', //禁止使用令人困惑的多行表达式
        'no-use-before-define': [
            'off',
            {
                functions: false,
                classes: false,
                variables: false,
            },
        ], //禁止定义前使用
        'no-with': 'error', //禁用 with 语句
        radix: 'error', //禁用函数内没有 yield 的 generator 函数
        'rest-spread-spacing': ['warn', 'never'], //强制限制扩展运算符及其表达式之间的空格
        'react/jsx-no-undef': 'error', //在 JSX 中禁止未声明的变量
        'react/no-direct-mutation-state': 'error', //禁止 this.state 的直接变化
        'react/jsx-uses-react': 'off', //防止 React 被错误地标记为未使用
        'react/react-in-jsx-scope': 'off',
        'no-alert': 0, //禁止使用alert confirm prompt
        'no-duplicate-case': 2, //switch中的case标签不能重复
        'no-eq-null': 2, //禁止对null使用==或!=运算符
        'no-inner-declarations': [2, 'functions'], //禁止在块语句中使用声明(变量或函数)
        'no-iterator': 2, //禁止使用__iterator__ 属性
        'no-negated-in-lhs': 2, //in 操作符的左边不能有!
        'no-octal-escape': 2, //禁止使用八进制转义序列
        'no-plusplus': 0, //禁止使用++,--
        'no-self-compare': 2, //不能比较自身
        'no-undef-init': 2, //变量初始化时不能直接给它赋值为undefined
        'no-unused-expressions': 'off', //禁止无用的表达式
        'no-useless-call': 2, //禁止不必要的call和apply
        'init-declarations': 0, //声明时必须赋初值
        'prefer-const': 0, //首选const
        'use-isnan': 2, //禁止比较时使用NaN,只能用isNaN()
        'vars-on-top': 2, //var必须放在作用域顶部
        "@typescript-eslint/no-explicit-any": ["off"]
    },
    // 处理react版本的报错React version not specified in eslint-plugin-react settings
  	"settings": {
        react: {
            version: 'detect',
        },
    },
}

设置忽略文件 .eslintignore

dist/*
node_modules/*
*.json

配置prettier(4步)

主要步骤

  1. 配置perttier
  2. 配置忽略文件
  3. 处理eslint的冲突
  4. 配置vscode的setting.json

1.安装配置prettier

yarn add prettier -D

配置.prettierrc.js文件

module.exports = {
  printWidth: 100,
  semi: true,
  singleQuote: true,
  tabWidth: 2,
};

判断是否生效直接使用命令 npx prettier --write [指定文件] ,查看文件是否根据 prettier 的规则格式化。

2.设置忽略文件 .prettierignore

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

3.处理eslint冲突

安装eslint-config-prettier 解决prettier和eslint之间的冲突

yarn add eslint-config-prettier -D

4. 配置vscode 的settings.json

{
  // eslint主要功能设定规范,捕获不规范的错误等 美化代码或者格式化代码功能交给prettier
	"eslint.format.enable": false,
	//打开保存格式化功能(保存代码的时候自动格式化)
	"editor.formatOnSave": true,
	//使用 prettier  作为默认格式化程序
	"editor.defaultFormatter": "esbenp.prettier-vscode"
}

husky

参考:https://juejin.cn/post/7282744150843047991
简要步骤:

  1. 安装并初始化husky
  2. 安装并配置lint-staged
  3. 安装配置commitlint

安装并初始化husky(2步)
使用husky-init用于快速初始化husky项目。

yarn add husky -D

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

知识点: prepare 脚本会在npm install(不带参数)之后自动执行

安装并配置lint-staged(3步)

作用:只处理git add .的文件

  1. 安装
yarn add lint-staged -D
  1. 配置package.json
{
	"scripts": ....
  // 设置lint-staged;提交时prettier代码格式化,eslint检查修复
  "lint-staged": {
    "src/**/*.{js,jsx,ts,tsx,json}": [
      "prettier --write",
      "eslint --fix"
    ]
  },
}
  1. 修改.husky/pre-commit文件,使提交时能执行lint-staged钩子
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

pnpm exec lint-staged
// 删除 npm test

安装配置commitlint(4步)

  1. 安装包
    // 校验提交注释是否规范(格式git commit : )
    // 2.配置文件 .commitlintrc.js
    yarn add @commitlint/cli @commitlint/config-conventional -D

  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],
  },
};
  1. 执行以下命令添加commitlint钩子
npx husky add .husky/commit-msg "npm run commitlint"
  1. 在package.json script中增加commitlint
	"scripts": {
    "commitlint": "commitlint --config commitlint.config.js -e -V"
  },

大功告成
代码提交规范-ESLint+Prettier+husky+Commitlint,前端,代码规范文章来源地址https://www.toymoban.com/news/detail-761833.html

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

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

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

相关文章

  • 代码规范 & 详细解释 husky、prettier、eslint、lint-staged 的作用和使用

    使用 vscode 新建一个项目(比如叫 my-project) 初始化 git 仓库( git init ) 初始化 package.json ( npm init -y ) 新建 src/main.js 项目结构如图 .git 目录没有出现在 vscode 编辑器中是正常的。 在介绍 husky 之前,首先要理解什么是 hook(钩子),在前端 Vue 框架中提供了 beforCreated、created、

    2024年02月03日
    浏览(52)
  • 基于Vue3+Vite+TS+ESLint+Prettier+Husky+lint-staged+commitlint+stylelint的项目构建

    博客后台管理系统使用后的是基于Vue3+Vite+TS+ESLint+Prettier的开发,具体项目构建如下 ESLint: 控制代码质量 Prettier: 控制代码风格 2.1、安装ESLint、Prettier相关相关包 eslint: ESLint的核心代码库 prettier: Prettier的格式化代码的核心代码库 eslint-config-airbnb-base: airbnb的代码规范(依赖pl

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

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

    2024年02月04日
    浏览(78)
  • 【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码规范

    本文介绍 vue3-element-admin 如何通过ESLint 检测 JS/TS 代码、Prettier 格式化代码、Stylelint 检测 CSS/SCSS 代码和配置 EditorConfig 来全方位约束和统一前端代码规范。 ESLint 可组装的JavaScript和JSX检查工具,目标是保证代码的一致性和避免错误。 安装 ESLint 插件 VSCode 插件市场搜索 ESLint 插

    2023年04月17日
    浏览(85)
  • 【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)
  • React18入门(第二篇)——React18+Ts项目配置husky、eslint、pretttier、commitLint

    我的项目版本如下: React: V18.2.0 Node.js: V16.14.0 TypeScript:最新版 工具: VsCode 本文将采用图文详解的方式,手把手带你快速完成在React项目中配置husky、prettier、commitLint,实现编码规范的统一,git提交规范的统一。 1.1 装包 1.2 ESLint 插件安装 1.3 创建命令并使用 新增命令 执行

    2024年02月08日
    浏览(56)
  • Nodejs+Typescript+Eslint+Prettier+Husky项目构建

    仓库地址 确保已经安装了git以及Node.js和npm,通过 git -v 、 node -v 和 npm -v 检查是否安装。 在新建的tsconfig.json中,修改target、module、和outDir,其中outDir设置为 ./dist ,其他根据情况设置。 根据情况选择配置: 首先,安装 Prettier,在项目目录中,运行 创建一个 .prettierrc 文件来

    2024年02月11日
    浏览(67)
  • uniapp+vite+vue3+ts配置eslint代码检查及prettier规范检查

    首先要知道eslint与prettier的区别,ESLint 是一个用于检测 JavaScript 代码中的错误和潜在问题的工具。它只关注你写的代码是否正确,不会管你代码的格式;Prettier 则是一个代码格式化工具,它旨在确保代码在缩进、空格、换行、引号和分号等格式化方面遵循一致的规则,在

    2024年03月16日
    浏览(66)
  • Vue3+Vite+TS项目集成ESlint +Prettier实现代码规范检查和代码格式化

    我在这里直接是通过vite提供的默认模板来创建一个vue3 + ts的项目。这里可以cmd,然后npm -v来查看版本。 这样一个vue3 + ts的项目就创建好了,使用vscode打开该项目,然后执行 yarn 安装依赖 依赖安装完成后,执行   yarn dev  启动项目就可以在浏览器中正常访问了。   初始化

    2024年01月24日
    浏览(89)
  • vite 创建vue3项目,使用 Prettier 统一格式化代码,集成 ESLint、Stylelint 代码校验规范

    在团队开发中,保持代码风格的一致性和代码质量的高度,对于项目的可维护性和可读性非常重要。为了实现这一目标,我们可以使用工具来自动格式化代码并进行代码校验,在开发过程中捕获潜在的问题,并提供修复建议。 本示例中,我们将使用 Vite 来创建一个新的 Vue

    2024年04月28日
    浏览(61)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包