当前位置: 首页 > news >正文

使用 ESLint + Prettier + Husky

​通过 ESLint 检查代码质量和风格,Prettier 统一代码格式,Husky + lint-staged 在 Git 提交前自动运行检查和格式化,从而保证团队代码风格一致,减少低级错误,提升代码质量和协作效率。​

工具

作用

解释

​ESLint​

✅ ​​代码质量与风格检查​

检测 JavaScript / TypeScript 代码中的潜在错误、不规范写法,比如未使用的变量、错误的导入、不符合规则的命名等

​Prettier​

✅ ​​代码自动格式化工具​

自动格式化代码,统一缩进、引号、换行、空格等,不关心代码对错,只关心“长得好不好看”

​Husky​

✅ ​​Git Hooks 工具​

让你在 Git 提交(commit)、推送(push)等操作前,自动运行脚本(比如代码检查、格式化)

​lint-staged​​(常与 Husky 配合使用)

✅ ​​只检查暂存区的文件​

只对 Git 暂存区(即将提交的代码)运行 ESLint / Prettier,提升效率,不检查全部项目文件


✅ 配置步骤(完整流程,适合实际项目落地)


✅ 第一步:初始化项目(如未初始化)

npm init -y
# 或者 yarn / pnpm

✅ 第二步:安装 ESLint(代码检查)

npm install eslint --save-dev
npx eslint --init

运行 npx eslint --init后,会有一系列选项,按需选择,比如:

  • 你要检查什么语言?→ JavaScript / TypeScript

  • 使用什么框架?→ React / Vue(按需)

  • 使用什么风格指南?→ Airbnb / Standard / 自定义

  • 是否使用 TypeScript?→ Yes

  • 使用什么模块系统?→ ES Modules

  • 配置文件格式?→ JavaScript / JSON / YAML(推荐 JavaScript)

这会生成一个 .eslintrc.js(或其它格式)配置文件。


✅ 第三步:安装 Prettier(代码格式化)

npm install prettier --save-dev
创建 Prettier 配置文件:

在项目根目录创建 .prettierrc.js或 .prettierrc.json,举个例子:

// .prettierrc.js
module.exports = {semi: true,singleQuote: true,tabWidth: 2,trailingComma: 'es5',printWidth: 100,endOfLine: 'lf',
};
(可选)创建忽略文件:

.prettierignore(和 .gitignore类似):

node_modules
dist
build

✅ 第四步:解决 ESLint 与 Prettier 的冲突(关键!)

ESLint 和 Prettier 默认可能会对一些格式问题(比如引号、缩进)产生冲突。

解决方案:安装兼容插件
npm install eslint-config-prettier eslint-plugin-prettier --save-dev
然后在 .eslintrc.js中引入:
module.exports = {extends: [// 你的原有配置,比如:'eslint:recommended','plugin:react/recommended','plugin:@typescript-eslint/recommended',// 加上下面这两行,解决冲突并启用 Prettier 检查'plugin:prettier/recommended', // 必须放在最后!],plugins: ['prettier'],rules: {'prettier/prettier': 'error', // 让 ESLint 把 Prettier 的格式问题当做 Error 抛出},
};

✅ ​​关键:plugin:prettier/recommended要放在 extends 数组最后!​


✅ 第五步:安装 Husky + lint-staged(Git 提交前自动检查)

1. 安装 Husky(Git Hooks 工具)
npm install husky --save-dev
npx husky install

通常你还需要在 package.json的 scripts 中加上:

"scripts": {"prepare": "husky install"
}

👉 这样在 npm install后会自动初始化 Husky。

2. 启用 Git Hooks,比如 pre-commit
npx husky add .husky/pre-commit "npx lint-staged"

这会在 .husky/pre-commit文件中生成一个钩子脚本,执行 lint-staged

3. 安装 lint-staged(只检查暂存区文件)
npm install lint-staged --save-dev
4. 在 package.json 中配置 lint-staged
"lint-staged": {"*.{js,jsx,ts,tsx,json,css,scss,md}": ["prettier --write",     // 先格式化"eslint --fix",         // 再自动修复 ESLint 错误"git add"               // 把修复后的文件重新加入暂存区]
}

✅ 这样你在 git commit时,Husky 会触发 lint-staged,只检查你本次提交修改的文件,并自动格式化 + 修复。


✅ 第六步:验证配置是否生效

  1. 修改一个 JS / TS 文件,故意写错(比如缺少分号、引号不统一)

  2. 执行 git add .,然后 git commit -m "test"

  3. 你应该会看到:

    • Prettier 自动格式化代码

    • ESLint 自动修复部分问题

    • 如果有无法自动修复的错误,提交会被阻止,并提示你修复


✅ 四、总结配置清单(一键回顾)

步骤

工具

作用

关键命令/文件

1

​ESLint​

检查代码质量与规范

npx eslint --init,配置 .eslintrc.js

2

​Prettier​

格式化代码风格

.prettierrc.js,配置格式规则

3

​ESLint + Prettier 兼容​

避免冲突,让 ESLint 管 Prettier 规则

eslint-config-prettiereslint-plugin-prettier

4

​Husky​

Git 提交前自动执行脚本

npx husky installnpx husky add .husky/pre-commit

5

​lint-staged​

只检查 Git 暂存区的文件

配置 "lint-staged"在 package.json

6

​自动格式化 + 修复​

提交前自动格式化代码并修复部分问题

prettier --writeeslint --fix


✅ 五、Bonus:你还可以做这些(进阶配置)

功能

说明

✅ ​​VSCode 自动格式化​

安装 ESLint、Prettier 插件,设置保存时自动格式化

✅ ​​提交信息规范(Commitlint)​

用 @commitlint/config-conventional约束 git commit message 格式,如 feat: 添加登录功能

✅ ​​Push 前检查(pre-push)​

也可以通过 Husky 添加 pre-push钩子,运行测试或构建

✅ ​​团队共享配置​

可以抽离 ESLint/Prettier 配置为 npm 包,供多个项目共用

http://www.dtcms.com/a/544527.html

相关文章:

  • mongodb备份脚本(单机+副本集)
  • 金仓数据库平替MongoDB全栈安全实战:从文档存储到多模一体化的演进之路
  • 基于k8s环境下mongodb备份恢复实战
  • 申威ky10架构安装MongoDB 4.0.1(rpm包:mongodb-4.0.1-8.ky10.sw_64.rpm)详细步骤
  • 网站建设开发语言和使用工具it培训套路
  • Diffusion Model与视频超分(2):解读字节开源视频增强模型SeedVR2
  • Linux小课堂: 系统硬件资源管理与设备操作指南
  • ROS2核心概念之代码示例一
  • 工厂考勤系统选型参考:如何选出最合适的方案
  • 【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
  • Linux错误(7)接口处于Down状态不通告IPv6地址变更事件
  • 开发避坑指南(67):Maven引入iText7-core依赖失败解决方案
  • 北京南站地图建设公司简介怎么写
  • 镇江网站建设平台江苏企业展厅设计公司
  • 用JetBrains Rider开发C#应用程序指南
  • 快速创建Word箱单(2/2)
  • LangChain4j学习11:模型上下文协议 (MCP)
  • mysql线上主从集群设置
  • RK3568 11.0编译报错ld.lld: error: undefined symbol: rtkbt_cts_info
  • 南京大学LLM开发基础(四)MoE, LoRA, 数的精度 + MLP层实验
  • 机器学习-回归分析概述
  • 企业建设网站的主要作用网站seo搜索引擎优化怎么做
  • 微信小程序可以做电影网站吗安网多少钱
  • 计算机专业做网站的开题报告门户建设开源软件
  • js基础:08、构造函数(共享方法)、原型(prototype)、原型对象、(修改原型)toString方法、垃圾回收
  • 如何通过机器学习(如K-means、SVM、决策树)与深度学习(如CNN、LSTM)模型,进行全球气候变化驱动因素的数据分析与趋势预测
  • Docker篇6-项目app.py和flask_app.service配置和映射到docker中
  • 从零开始搭建 flask 博客(1)实验
  • 深入解析 Rust 解构模式:元组、结构体与枚举的精准拆解
  • 从零开始搭建 flask 博客实验(2)