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

react项目中引入最新版本eslint

目的

  1. 我们讲eslint引入项目,无非就是让我们在写代码的过程当中,可以给我们一些友好的提示,来检查我们代码的书写合理性,以及一些代码书写习惯的统一;
  2. 最新版本9.x以上的eslint适配我们的项目

安装

# 通过eslint官方提供的脚手架安装
npm init @eslint/config
# 根据项目实际情况,选择出现的问候语

使用

上面命令跑完之后,你的项目根目录会多一个eslint.config.mjs文件这是我们本地的配置
生成的默认代码如下,

这个时候我们的项目文件已经支持了eslint检查,大家可以去看看(如果是ts文件的话,你会看到使用any类型的地方给出了eslint报错提示)

import globals from "globals"
import pluginJs from "@eslint/js"
import tseslint from "typescript-eslint"
import pluginReact from "eslint-plugin-react"export default [{ files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"] },{ languageOptions: { globals: globals.browser } },pluginJs.configs.recommended,...tseslint.configs.recommended,pluginReact.configs.flat.recommended,
];

eslint默认的配置,说几个对于我们来说比较隐形的配置

[// 默认给我们忽略了这些文件{ignores: ["**/node_modules/",".git/"]},{files: ["**/*.js", "**/*.mjs"]},// 默认配置了.cjs按照commonjs格式进行检测{files: ["**/*.cjs"],languageOptions: {sourceType: "commonjs",ecmaVersion: "latest"}}
]

比较明显的改动

  1. 默认不再支持,匹配模式的专用文件 .eslintignore。仅支持配置文件中配置的ignores和运行命令时添加的--ignore-pattern
    • 如果依然想支持,需要按照一下方式进行配置
// eslint.config.js
import { includeIgnoreFile } from "@eslint/compat";
import path from "node:path";
import { fileURLToPath } from "node:url";const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const gitignorePath = path.resolve(__dirname, ".gitignore");export default [includeIgnoreFile(gitignorePath),{// your overrides}
];
  1. --ext参数配置去掉,仅限 eslintrc 模式。9.x版本不再使用,我们eslint执行的范围,取决于我们配置的files范围
  2. 不再支持在package.json中进行配置eslint的相关配置了, 如之前的eslintConfig

新版本的命令配置

package.json文件

  • lint命令,已经不在需要手动配置–ext指定检查文件的格式和对应目录,迁移到了配置文件eslint.config.mjs
    • 也就是上述默认生成的文件中,files这个配置
  • fix:lint, 依然可以用–fix参数
{..."scripts": {"lint": "eslint . --color","fix:lint": "eslint . --fix"},...
}

写在最后

本期最后,博主直接配上我自己项目的eslint.config.mjs配置, 以下添加的rules都是当eslint提示之后才会发现,不需要一个一个去熟悉,完全没必要的哈

import globals from "globals";
import pluginJs from "@eslint/js";
import tsEslint from "typescript-eslint";
import pluginReact from "eslint-plugin-react";export default [{files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"],},{ languageOptions: { globals: globals.browser } },pluginJs.configs.recommended,...tsEslint.configs.recommended,pluginReact.configs.flat.recommended,{rules: {/** 可以出现any类型 */"@typescript-eslint/no-explicit-any": "off",/** 需要分号 */semi: ["error", "always"],/** 可以使用require */'@typescript-eslint/no-require-imports': 'off',/** 可以用ts-ignore */'@typescript-eslint/ban-ts-comment': 'off',/*** 不检查以下划线开头的 未使用的变量 * 包含了参数变量,解构变量,catch中的参数变量*/'@typescript-eslint/no-unused-vars': ["error", { "argsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_", "destructuredArrayIgnorePattern": "^_"  }]}},{ignores: ['config/','build/','public/','scripts/','mock/','.vscode/','src/utils/XMLToJson.js','**/*.test.js']}
];

如果本期的内容有帮助到大家,记得给博主点个赞,让博主开心开心,你们的支持是我持续更新和保证文章质量的动力!

相关文章:

  • 使用iTextPDF库时,设置文字为中文格式
  • Hadoop集群的高可用(HA):NameNode和resourcemanager高可用的搭建
  • 基于Springboot+Vue的基于协同过滤算法的个性化音乐推荐系统 (含源码数据库)
  • Java高效编程(7):消除过时的对象引用
  • ue4多个面重叠闪烁
  • 如何获取钉钉webhook
  • 深度学习·Argparse
  • HBase 的基本架构 详解
  • 锐捷—NAT地址映射+IPsec隧道
  • golang学习笔记26-管道(Channel)【重要】
  • CSS中的font-variation-settings:探索字体的可变性
  • 鸿蒙开发(NEXT/API 12)【请求用户授权】手机侧应用开发
  • 计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • SpringAOP实现的两种方式-JDK动态代理和CGLIB动态代理
  • 【TypeScript学习】TypeScript基础学习总结一
  • [笔记] php常见简单功能及函数
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Git学习与使用心得(1)—— 初始化
  • laravel 用artisan创建自己的模板
  • npx命令介绍
  • TypeScript实现数据结构(一)栈,队列,链表
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 简单易用的leetcode开发测试工具(npm)
  • 开源SQL-on-Hadoop系统一览
  • 前端js -- this指向总结。
  • 设计模式 开闭原则
  • 树莓派 - 使用须知
  • 我感觉这是史上最牛的防sql注入方法类
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 小程序开发中的那些坑
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • const的用法,特别是用在函数前面与后面的区别
  • linux 淘宝开源监控工具tsar
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​2020 年大前端技术趋势解读
  • ​Java基础复习笔记 第16章:网络编程
  • ​渐进式Web应用PWA的未来
  • # 数据结构
  • #565. 查找之大编号
  • #pragma预处理命令
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (Oracle)SQL优化技巧(一):分页查询
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (ros//EnvironmentVariables)ros环境变量
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (生成器)yield与(迭代器)generator
  • (新)网络工程师考点串讲与真题详解
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转载)Linux网络编程入门
  • .NET 解决重复提交问题