react+ts+eslint+prettier 配置教程

1.创建项目

复制代码
npx create-react-app my-app --template typescript

2.安装依赖

  • eslint:核心代码质量工具。

  • prettier:代码格式化工具。

  • eslint-plugin-prettier:将 Prettier 的规则集成到 ESLint 中。

  • eslint-config-prettier:禁用与 Prettier 冲突的 ESLint 规则。

  • @typescript-eslint/parser:TypeScript 的 ESLint 解析器。

  • @typescript-eslint/eslint-plugin:为 TypeScript 提供额外的 ESLint 规则。

    npm install --save-dev eslint prettier eslint-plugin-prettier eslint-config-prettier @typescript-eslint/parser @typescript-eslint/eslint-plugin

3.配置 ESLint

在项目根目录下创建 .eslintrc.js 文件,配置 ESLint 以支持 Prettier 和 TypeScript:

复制代码
module.exports = {
  root: true, // 确保 ESLint 不会向上查找配置文件
  parser: '@typescript-eslint/parser', // 使用 TypeScript 解析器
  parserOptions: {
    ecmaVersion: 2020, // 支持 ES2020 语法
    sourceType: 'module', // 支持 ES 模块
    ecmaFeatures: {
      jsx: true, // 支持 JSX
    },
  },
  env: {
    browser: true, // 浏览器环境
    node: true, // Node.js 环境
    es6: true, // ES6+ 语法支持
  },
  extends: [
    'eslint:recommended', // ESLint 推荐规则
    'plugin:@typescript-eslint/recommended', // TypeScript 推荐规则
    'plugin:react/recommended', // React 推荐规则
    'plugin:react/jsx-runtime', // 支持 React 17+ 的 JSX 运行时
    'plugin:prettier/recommended', // Prettier 推荐规则
    'prettier', // 禁用与 Prettier 冲突的 ESLint 规则
  ],
  plugins: [
    'react', // React 插件
    'prettier', // Prettier 插件
    '@typescript-eslint', // TypeScript ESLint 插件
  ],
  rules: {
    // ESLint 规则
    'no-unused-vars': 'warn', // 允许未使用的变量,但发出警告
    'no-console': 'warn', // 允许 console,但发出警告
    'react/react-in-jsx-scope': 'off', // React 17+ 不需要此规则
    'react/jsx-uses-react': 'off', // React 17+ 不需要此规则
    'react/jsx-filename-extension': [1, { extensions: ['.tsx', '.jsx'] }], // 允许在 JSX 文件中使用 TS/JS

    // Prettier 规则
    'prettier/prettier': [
      'error',
      {
        singleQuote: true, // 使用单引号
        semi: true, // 使用分号
        trailingComma: 'all', // 在对象或数组的最后一个元素后添加逗号
        printWidth: 80, // 每行的最大字符数
        tabWidth: 2, // 缩进宽度
        useTabs: false, // 不使用制表符缩进
        endOfLine: 'auto', // 自动处理换行符
      },
    ],
  },
  settings: {
    react: {
      version: 'detect', // 自动检测 React 版本
    },
  },
};

4.配置 Prettier

在项目根目录下创建 .prettierrc.js 文件,配置 Prettier 的格式化规则:

复制代码
module.exports = {
  singleQuote: true, // 使用单引号
  semi: true, // 使用分号
  trailingComma: 'all', // 在对象或数组的最后一个元素后添加逗号
  printWidth: 80, // 每行的最大字符数
  tabWidth: 2, // 缩进宽度
  useTabs: false, // 不使用制表符缩进
  jsxSingleQuote: true, // JSX 中使用单引号
  bracketSpacing: true, // 对象字面量的括号是否换行
  jsxBracketSameLine: false, // JSX 的闭合括号是否在同一行
  endOfLine: 'auto' // 自动处理换行符
};

5.配置 VS Code(可选)

如果你使用的是 VS Code,可以通过以下配置自动格式化代码:

安装插件
  1. ESLint 插件:自动检查代码质量。

  2. Prettier 插件:自动格式化代码。

配置 .vscode/settings.json

在项目根目录下创建 .vscode 文件夹,并在其中创建 settings.json 文件:

复制代码
{
  "editor.formatOnSave": true, // 保存时自动格式化
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true // 保存时自动修复 ESLint 问题
  },
  "prettier.configPath": "./.prettierrc.js", // 指定 Prettier 配置文件路径
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // 设置 Prettier 为默认格式化工具
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[javascriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

6.测试配置

复制代码
npx eslint . --ext .ts,.tsx,.js,.jsx --fix
npx prettier . --write

7. 配置 Husky 和 Lint-staged(可选)

为了确保提交的代码符合格式要求,可以使用 huskylint-staged 在提交前自动运行 ESLint 和 Prettier。

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

package.json 中添加以下配置:

复制代码
{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,tsx,js,jsx,json,css,scss,md}": [
      "eslint --fix",
      "prettier --write",
      "git add"
    ]
  }
}

检查配置是否生效

复制代码
//都得代码在暂存区才能用下面方法测试
npx lint-staged

如果没有生效????

1.用 npx husky --version 检查,如何显示如下需要安装 npx husky install

Usage:

husky install dir (default: .husky)

husky uninstall

husky set|add <file> cmd

2.然后关联 npx husky add .husky/pre-commit "npx lint-staged"

8. 总结

现在,你的 React + TypeScript 项目已经配置了 ESLint 和 Prettier,所有配置文件都使用 .js 格式。你可以根据需要进一步调整规则或扩展配置。以下是配置文件的总结:

  • .eslintrc.js:ESLint 配置文件。

  • .prettierrc.js:Prettier 配置文件。

  • .vscode/settings.json:VS Code 的自动格式化配置(可选)。

  • huskylint-staged:提交前自动格式化和修复代码(可选)

相关推荐
Su米苏几秒前
针对使用@vue-office 出现的包异常找不到问题
前端·javascript·vue.js
坚定信念,勇往无前4 分钟前
electron打包mac ,apple m4出错:ffprobe是x86,不是arm64
前端·javascript·electron
专业抄代码选手19 分钟前
01|从手写 DOM 到虚拟 DOM:把 UI 从“操作”变成“描述”
前端·javascript·react.js
喜欢睡觉20 分钟前
单词管理系统
前端·后端
YHL28 分钟前
向量数据库入门(二):Embedding → 语义搜索 → RAG 日记助手
前端·架构
码视野29 分钟前
基于 Vue3 + Element Plus 的【青少年心理健康智能测评与 AI 情绪树洞陪护干预系统】设计与实现(含PRD/三端源码/大屏)
前端·vue.js·人工智能·vue3
专业抄代码选手30 分钟前
03|React 为什么需要协调:比较两棵树,而不是重建页面
前端·javascript·react.js
灯澜忆梦33 分钟前
【基于GO的Web开发11】gin获取URL‑Path 路径参数
前端·后端·golang·html·gin
王霸天33 分钟前
GLB 文件太大怎么办?我把它从 47MB 压到 8MB,全程没碰命令行
前端·javascript·程序员
半个落月33 分钟前
Next.js 16 笔记应用实战:Redis 数据链路与组件两版拆分详解
前端·redis·next.js