在项目中加入 husky + lint-staged + eslint,代码检测格式化

背景

        由于日常工作的多人协作中,会因为个人代码编写风格导致代码在不同人电脑上,会有异常代码格式的提示,为了解决这个小问题,我们可以使用 husky + lint-staged 来对代码进行一定程度上的格式化,使格式风格统一,方便查看

步骤

        先安装相关插件  pnpm add husky lint-staged --save-dev

        根据 husky 的文档,输入 npx husky init ,然后会在目录下生成 .husky 文件夹,打开 pre-commit 文件,可以在内输入 npx lint-staged。再 package.json 会生成一个脚本 然后,我们先运行一下 pnpm prepare (hucky文档

        说到这个 lint-staged,我们可以在 package.json 创建一个字段,内容如下

// package.json
{
    ...
    "lint-staged": {
        "*.js": "eslint --fix", // 比如我们要对提交前的所有 js 文件进行语法检查以及修复
    }
}

        日常工作中 eslint 是js必备的代码语法检测、修复工具。查阅文档,eslint --fix 可以对结果进行修复

        安装插件 pnpm add eslint --save-dev,根据 eslint 文档在项目根目录下创建 eslint.config.js,

然后,再安装 @eslint/js 预定义配置,同样 pnpm add eslint --save-dev,示例配置文件如下:

import js from '@eslint/js'

export default [
    js.configs.recommended,

   {
       rules: {
            'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', // 当生产环境时,不允许console
            'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', // 当生产环境时,不允许debugger
        }
   }
];

 此时在项目中,创建 src 文件夹,再创建测试文件 index.js,内容如下:

function test(){
    let a= 1;
    let b=2;;;
    const c = 3
    console.log(a+
        b);
    const df= 1
    return a*b
}
  test ();

 将此项目和gitlab的仓库关联好之后,提交代码就会自动检测,在终端输入 git add . && git commit -m "test msg",可以看到,终端有提示检查不通过:

报错的内容,第一条和第三条,是 c 和 df 定义了但未使用,第二个是提示console未定义,这个报错就需要在 eslint.config.js 里面定义一下全局对象,修改为如下:

import js from '@eslint/js'

export default [
    js.configs.recommended,

   {
        languageOptions: {
            globals: {
                console: 'readonly'
            }
        },
        rules: {
            'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', // 当生产环境时,不允许console
            'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', // 当生产环境时,不允许debugger
            // 'no-multi-spaces': ['error', { ignoreEOLComments: true }], // 不允许多个空格
        }
   }
];

再次执行提交操作,就只剩下这两条报错:

        在目前,我们能实现的就是对代码语法检测,但未做到对代码的格式化。所以我们用到 prettier,来做代码格式化。但是我们这里可以不使用 prettier 这个依赖包,而是可以安装 eslint 的插件 eslint-plugin-prettier,根据文档,安装 eslint-plugin-prettier eslint-config-prettier 

pnpm add eslint-plugin-prettier eslint-config-prettier --save-dev

        修改eslint.config.js:

import js from '@eslint/js'
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'

export default [
  js.configs.recommended,
  eslintPluginPrettierRecommended,
  {    
    languageOptions: {
      globals: {
        console: 'readonly'
      }
    },
    rules: {
      'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', // 当生产环境时,不允许console
      'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' // 当生产环境时,不允许debugger
    }
  }
]

 再次保存,然后将之前的代码检查报错行,直接注释,走 git 提交,

可以看到提示正常:

然后代码也被格式化并保存下来了,到此代码检测和格式化就完成了。

结束语

        目前用到的依赖都是当前时间(2024/6)下最新版本,如果老版本的则需要翻阅旧版本文档。希望对大家有帮助,如果有疑问可以评论交流学习一下。

相关推荐

  1. Python,f代表格式化字符串

    2024-07-21 20:00:05       28 阅读
  2. 格式化日期】Vue3如何格式化日期

    2024-07-21 20:00:05       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 20:00:05       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 20:00:05       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 20:00:05       45 阅读
  4. Python语言-面向对象

    2024-07-21 20:00:05       55 阅读

热门阅读

  1. 目标检测算法

    2024-07-21 20:00:05       20 阅读
  2. 在澳大利亚留学,论文应该怎么写?

    2024-07-21 20:00:05       19 阅读
  3. 信息增益与基尼指数:决策树分裂准则的比较

    2024-07-21 20:00:05       20 阅读
  4. WebGIS主流的客户端框架比较|OpenLayers|Leaflet|Cesium

    2024-07-21 20:00:05       18 阅读
  5. [强化学习马里奥 MarioRL]-- 环境ENV 3

    2024-07-21 20:00:05       18 阅读