代码提交git时自动格式化并通过ESlint检测

本文介绍了如何在git提交时自动使用prettier进行代码格式化,并结合ESLint进行代码检查,确保团队代码风格统一。通过安装依赖、配置prettier与ESLint规则、设置husky和lint-staged,实现git提交前的自动化操作。遵循正确的配置步骤,可以提升代码质量和团队协作效率。
部署运行你感兴趣的模型镜像

前言

在同一个项目中,一般都是几个人合作开发,每个人的代码风格不同,因此提交到git之前,需要统一下格式,因此才有了这篇文章,分享一下自己的配置过程。希望每个小伙伴都能规范自己的代码,如果你认为对你有帮助或者有小伙伴有更好的方法欢迎积极留言!

准备工作

以vue为例,用脚手架生成一个项目,目录结构(这个没有什么影响,已有项目更好)

介绍下我们需要使用到的npm模块

  • prettier  代码格式化模块,和vscode上安装的Vetur扩展工具使用的格式化相同
  • husky  git的钩子,在git的hook中执行一些命令
  • lint-staged  对git暂存的文件进行lint检查
  • eslint   js代码检测工具

第1步

安装所需依赖

cnpm install --save-dev prettier husky lint-staged eslint

第2步

2.1 配置prettier的规则

在项目更目录新建一个 .prettierrc 文件,内容为(这里为了方便加了中文注释,实际需要将注释去掉)

{
    // 代码换行长度
    "printWidth": 200,
    // 代码缩进空格数
    "tabWidth": 2,
    // 使用制表符缩进而不是空格缩进
    "useTabs": true,
    // 代码结尾是否加分号
    "semi": false,
    // 是否使用单引号
    "singleQuote": true,
    // 对象大括号内两边是否加空格 { a:0 }
    "bracketSpacing": true,
    // 单个参数的箭头函数不加括号 x => x
    "arrowParens": "avoid"
}

更多配置可以查看prettier官网配置:https://prettier.io/docs/en/options.html

 2.2 配置eslint规则

因为没有全局安装eslint,所以在项目中执行(初始化eslint文件)

./node_modules/.bin/eslint --init

这是我的根据eslint的提示选项,具体根据项目不同选择不同

在项目自动在根目录新增加了一个.eslintrc.json文件,在rules选项中校验规则:

"rules":{
    // 禁止对象字面量中出现重复的 key
    "no-dupe-keys": "error",
    // 禁止出现重复的 case 标签
    "no-duplicate-case": "error",
    // 禁止出现空语句块,允许catch出现空语句
    "no-empty": ["error", {"allowEmptyCatch": true}],
    // 禁止对 catch 子句的参数重新赋值
    "no-ex-assign":"error",
    // 禁止不必要的布尔转换
    "no-extra-boolean-cast": "error",
    // 禁止不必要的分号
    "no-extra-semi": "error",
    // 强制所有控制语句使用一致的括号风格
    "curly": "error"
    
}

更多校验规则可以查看eslint官网配置:https://cn.eslint.org/docs/rules/

第3步

在package.json中增加husky和lint-staged的配置

"husky":{
    "hooks": {
        "pre-commit": "lint-staged"
    }
},
"lint-staged": {
    "src/**": [
        "prettier --config .prettierrc --write",
        "eslint --fix",
        "git add"
    ]
}

效果图:

具体检查路径在lint-staged 配置项可以配置,具体查看官网

注:lint-staged配置项中一定要加"git add",否则格式化修改后的文件,没有被commit到本地仓库中

第4步

检验是否成功,修改一些文件后,执行

git add .
git commit -m '测试'

此时就会自动格式化后进行eslint校验,如果有错误的话,commit会失败,并给出eslint提示的错误,修改后再次提交就可以了,下面是成功的例子

注:如果还有不明白的可以将demo克隆下来看一下,githua地址 https://github.com/foreverhot/demo/tree/master

需将检查图片忽略,否则检查不通过(创建以下文件并分别加入/src/img

.eslintignore文件 忽略eslint检查的路径

.prettierignore文件 忽略prettier格式化的路径

关注我:前端Jsoning

 

 

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

在使用 Git 提交代码,如果遇到 ESLint 报错,通常是因为项目中配置了 Git 的 `pre-commit` 钩子(hook),该钩子会在提交前运行 ESLint 进行代码校验。如果校验失败,则提交会被中断。以下是几种解决方法: ### 1. 修复 ESLint 报错 最直接的方法是根据报错信息修复代码中的问题。ESLint 通常会指出具体的错误位置和类型,例如语法错误、格式问题或不规范的代码风格。可以通过以下方式解决: - 根据错误提示逐条修复代码。 - 使用 ESLint 提供的自动修复功能(如果支持)。运行以下命令尝试自动修复可纠正的问题: ```bash npx eslint --ext .js . --fix ``` 上述命令会对 `.js` 文件进行校验尝试自动修复可以处理的问题 [^1]。 ### 2. 暂忽略 ESLint 校验 在某些紧急情况下,如果需要快速提交代码,可以选择暂忽略 ESLint 校验。可以通过以下方式实现: - **跳过 Git 的 `pre-commit` 钩子**:使用 `--no-verify` 参数跳过所有 Git 钩子,包括 ESLint 校验。 ```bash git commit -m "Your commit message" --no-verify ``` 这样可以绕过所有提交前的校验步骤,直接提交代码 [^1]。 - **禁用 ESLint 插件或配置**:如果是因为 ESLint 版本不一致导致的问题,可以临修改 `package.json` 文件,移除或注释掉与 ESLint 相关的依赖或配置,然后再提交代码。 ### 3. 更新或修复 ESLint 配置 如果问题是由 ESLint 版本不一致引起的,可以尝试更新项目中的 ESLint 版本以匹配检测环境。运行以下命令更新 ESLint: ```bash npm install eslint@latest --save-dev ``` 此外,确保所有开发人员使用相同的 ESLint 配置文件(如 `.eslintrc` 或 `eslintConfig` 字段),以避免因配置差异导致的校验失败 [^2]。 ### 4. 自定义 Git 提交钩子 如果希望保留 ESLint 校验但又不希望其过于严格,可以自定义 Git 的 `pre-commit` 钩子脚本,使其在特定情况下允许提交。例如,可以在钩子脚本中添加条件判断逻辑,仅在校验通过阻止提交,或者提供一个选项让用户选择是否跳过校验。 ### 5. 使用 Husky 和 lint-staged 进行精细化控制 如果项目使用了 [Husky](https://github.com/typicode/husky) 和 [lint-staged](https://github.com/okonet/lint-staged) 来管理 Git 钩子,可以通过配置 `lint-staged` 来控制哪些文件需要进行 ESLint 校验。例如,可以在 `package.json` 中添加如下配置: ```json { "lint-staged": { "*.js": ["eslint --fix", "git add"] } } ``` 这样可以确保只有修改过的 `.js` 文件会被 ESLint 校验,且在自动修复后重新添加到暂存区 [^1]。 ### 总结 在遇到 ESLint 报错,优先考虑修复代码以符合规范;在紧急情况下,可以使用 `--no-verify` 参数跳过校验;长期来看,建议维护一致的 ESLint 版本和配置,以减少此类问题的发生。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值