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

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:提交前自动格式化和修复代码(可选)

相关文章:

  • 【AI】AI开源IDE:CLine源码分析报告
  • 54-WLAN 无线局域网配置方案-三层
  • 云曦25开学考复现
  • React-异步队列执行方法useSyncQueue
  • MySql的in和join对比谁更高效
  • JVM_八股场景题
  • 【含文档+PPT+源码】Python爬虫人口老龄化大数据分析平台的设计与实现
  • Kubernetes开发环境minikube | 开发部署apache tomcat web集群应用
  • VUE2脚手架的下载与安装
  • 【含文档+PPT+源码】基于Python爬虫二手房价格预测与可视化系统的设计与实现
  • php虚拟站点提示No input file specified时的问题及权限处理方法
  • Web3 的隐私保护机制:如何保障个人数据安全
  • 【今日EDA行业分析】2025年3月8日
  • http协议的三次握手机制
  • Spring源码探析(一):SpringApplication构造函数核心逻辑
  • 工程化与框架系列(27)--前端音视频处理
  • 用OpenCV写个视频播放器可还行?(C++版)
  • MySQL知识点(第一部分)
  • 深度学习|自监督学习新星:DINO 解析与实践指南
  • 请谈谈 HTTP 中的安全策略,如何防范常见的Web攻击(如XSS、CSRF)?
  • 中国人民银行等四部门联合召开科技金融工作交流推进会
  • 张汝伦:康德和种族主义
  • 特朗普促卡塔尔说服伊朗放弃核计划,伊朗总统:你来吓唬我们?
  • 沧州低空经济起飞:飞行汽车开启千亿赛道,通用机场布局文旅体验
  • 乌总统:若与普京会谈,全面停火和交换战俘是主要议题
  • 上海北外滩,未来五年将如何“长个子”“壮筋骨”?