react项目中引入最新版本eslint

目的

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

安装

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

使用

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

生成的默认代码如下,

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

javascript 复制代码
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默认的配置,说几个对于我们来说比较隐形的配置

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

比较明显的改动

  1. 默认不再支持,匹配模式的专用文件 .eslintignore。仅支持配置文件中配置的ignores和运行命令时添加的--ignore-pattern
    • 如果依然想支持,需要按照一下方式进行配置
javascript 复制代码
// 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参数
json 复制代码
{
	...
	"scripts": {
   	  "lint": "eslint . --color",
   	  "fix:lint": "eslint . --fix"
  	},
  	...
}

写在最后

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

javascript 复制代码
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'
    ]
  }
];

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

相关推荐
哑巴语天雨4 小时前
React+Vite项目框架
前端·react.js·前端框架
初遇你时动了情4 小时前
react 项目打包二级目 使用BrowserRouter 解决页面刷新404 找不到路由
前端·javascript·react.js
码农老起5 小时前
掌握 React:组件化开发与性能优化的实战指南
react.js·前端框架
前端没钱5 小时前
从 Vue 迈向 React:平滑过渡与关键注意点全解析
前端·vue.js·react.js
高山我梦口香糖8 小时前
[react] <NavLink>自带激活属性
前端·javascript·react.js
撸码到无法自拔9 小时前
React:组件、状态与事件处理的完整指南
前端·javascript·react.js·前端框架·ecmascript
高山我梦口香糖9 小时前
[react]不能将类型“string | undefined”分配给类型“To”。 不能将类型“undefined”分配给类型“To”
前端·javascript·react.js
Domain-zhuo9 小时前
如何利用webpack来优化前端性能?
前端·webpack·前端框架·node.js·ecmascript
乐闻x11 小时前
VSCode 插件开发实战(四):使用 React 实现自定义页面
ide·vscode·react.js
irisMoon0611 小时前
react项目框架了解
前端·javascript·react.js