前端项目同时配置ESlint和Prettier

在前端项目中同时使用 ESlint(代码检查)Prettier(代码格式化) 可以确保代码既符合规范又风格统一。以下是详细配置步骤:


1. 安装依赖

arduino 复制代码
npm install --save-dev eslint prettier eslint-config-prettier eslint-plugin-prettier
  • eslint:JavaScript/TypeScript 代码检查工具。
  • prettier:代码格式化工具。
  • eslint-config-prettier:关闭 ESLint 中与 Prettier 冲突的规则。
  • eslint-plugin-prettier:将 Prettier 作为 ESLint 规则运行。

2. 配置 ESLint

.eslintrc.js(示例)

java 复制代码
module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: [
    "eslint:recommended", // ESLint 推荐规则
    "plugin:react/recommended", // React 推荐规则(可选)
    "plugin:@typescript-eslint/recommended", // TS 推荐规则(可选)
    "plugin:prettier/recommended", // 必须放在最后,避免冲突
  ],
  parser: "@typescript-eslint/parser", // 解析 TS(可选)
  parserOptions: {
    ecmaVersion: "latest",
    sourceType: "module",
  },
  rules: {
    "prettier/prettier": "error", // 让 Prettier 的错误以 ESLint 错误显示
    "no-console": "warn", // 自定义规则示例
    "react/prop-types": "off", // 关闭 React prop-types 检查(可选)
  },
};

关键点

  • "plugin:prettier/recommended" 必须放在 extends 的最后,确保覆盖冲突的 ESLint 规则。
  • "prettier/prettier": "error" 让 Prettier 的格式化问题以 ESLint 错误显示。

3. 配置 Prettier

.prettierrc(示例)

json 复制代码
{
  "printWidth": 80,
  "tabWidth": 2,
  "useTabs": false,
  "semi": true,
  "singleQuote": false,
  "trailingComma": "es5",
  "bracketSpacing": true,
  "jsxSingleQuote": false,
  "arrowParens": "always",
  "endOfLine": "lf"
}

说明

  • 这些规则可根据团队风格调整,如 singleQuote: true(使用单引号)。
  • 文件支持 .prettierrc / .prettierrc.json / prettier.config.js 等格式。

4. 配置 VS Code 自动格式化

.vscode/settings.json

json 复制代码
{
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"]
}

作用

  • 保存时自动运行 Prettier 格式化 + ESLint 修复。
  • 确保 ESLint 和 Prettier 插件已安装。

5. 添加 Git 提交检查(可选)

使用 husky + lint-staged 在提交前自动检查和修复代码:

csharp 复制代码
npm install --save-dev husky lint-staged
npx husky init

package.json 配置

json 复制代码
{
  "lint-staged": {
    "**/*.{js,jsx,ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ]
  }
}

.husky/pre-commit

bash 复制代码
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged

效果 :提交代码前自动执行 eslint --fixprettier --write


6. 运行检查

  • 手动检查 ESLint

    css 复制代码
    npx eslint src --fix
  • 手动运行 Prettier

    css 复制代码
    npx prettier --write src/**/*.{js,jsx,ts,tsx}

常见问题

Q1: ESLint 和 Prettier 冲突了怎么办?

  • 确保 eslint-config-prettier 已正确配置(extends 中放在最后)。
  • 检查 .eslintrc 是否包含与 Prettier 冲突的规则(如 quotessemi)。

Q2: 保存时没有自动格式化?

  • 检查 VS Code 是否安装了 ESLintPrettier 插件。
  • 确保 .vscode/settings.json 配置正确。

总结

工具 作用 配置文件
ESLint 代码质量检查(语法、逻辑错误) .eslintrc.js
Prettier 代码风格格式化(缩进、引号等) .prettierrc

通过以上配置,ESLint 和 Prettier 可以完美协作,既保证代码质量,又统一代码风格。 🚀

相关推荐
weixin199701080162 分钟前
《alibaba.idle.isv.order.ship 接入实录:闲鱼订单发货回传的5个隐式约束》(附Python源码)
服务器·前端·python
初願致夕霞9 分钟前
五种IO模型(详解非阻塞IO与多路转接)
linux·前端·网络·数据库·tcp/ip
深圳多奥智能一卡(码、脸)通系统11 分钟前
智能梯控SDK可直接用于第三方开发对接的接口文档说明书
服务器·前端·算法
烂蜻蜓20 分钟前
Flask入门教程(十五):错误处理与日志——打造健壮的Web应用
前端·python·flask
深念Y27 分钟前
浏览器缩放检测的前端通用方案
前端
风骏时光牛马35 分钟前
AIAgent异常故障根因分析与复盘总结
前端
weixin_4316004436 分钟前
前端数据埋点(7):Web Vitals——页面慢不慢,不是再包一层 fetch
前端·性能优化·sentry·数据埋点
এ慕ོ冬℘゜2 小时前
前端实战:jQuery实现动态表格渲染与状态切换功能
前端·javascript·jquery
jay神3 小时前
【计算机毕业设计】基于Flask+Vue的电影数据可视化与智能推荐系统
前端·vue.js·python·信息可视化·flask·毕业设计·课程设计
FreeTinker9 小时前
HTML本地存储技术解析:localStorage与sessionStorage的原理、差异与应用场景
前端·html