在项目中加入 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)下最新版本,如果老版本的则需要翻阅旧版本文档。希望对大家有帮助,如果有疑问可以评论交流学习一下。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值