首页 > 其他分享 >TS 项目如何从 ESlint8 升级至 9并集成 Prettier

TS 项目如何从 ESlint8 升级至 9并集成 Prettier

时间:2024-08-13 23:38:29浏览次数:15  
标签:ESlint8 plugin hooks TS js react prettier eslint Prettier

eslint 8 到 9 属于破坏性更新(Break Change),因此导致 eslint 8 配置方式无法直接使用(可以使用兼容包,但这不是本文的主题)。

其实大家最关心的就是从 eslint 8 到 9 之后的写法,而与 eslint 息息相关的多种配置插件也需要大量的变更,因此本文核心就是:使用 eslint9 配置规则和集成 prettier
废话不多说,开始。

环境要求

不支持 Node 19 所有版本,Node 18最低要求 18.8.0,Node 20最低要求 20.9.0 及 Node 21.1.0 以上。

image

升级 eslint 至最新版

9.9.0 是我写文章时的最新版本

npm i eslint@^9.9.0 -D

安装 @eslint/js

npm i @eslint/js -D

安装 typescript-eslint

npm i typescript-eslint -D

该文件包含了 @typescript-eslint/parser@typescript-eslint/eslint-plugin,因此需移除以上两个依赖,而且以上两个插件不直接支持 eslint9

安装 globals

npm i globals -D

该包在 eslint 的配置中会用到

移除 eslint-config-prettier

eslint 在 8.53.0 之后就不再支持格式化规则,因此 eslint-config-prettier 作为 eslintprettier 的规则冲突解决插件,已经没用了。

旧 eslint 配置文件改名为 eslint.config.js

image

在 8 版本及之前,eslint 默认读取的以上配置文件中,package.json 配置已在 9 中移除,其余配置的兼容性在 10 版本会移除

需提前安装 prettiereslint-plugin-prettier
由于项目是 react,所以 react 相关的都注释掉了,可以参考写法进行配置。
新的 eslint.config.js 内容如下

import js from "@eslint/js";
import globals from "globals";
// import reactHooks from "eslint-plugin-react-hooks";
// import reactRefresh from "eslint-plugin-react-refresh";
import tseslint from "typescript-eslint";
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";

export default tseslint.config({
  extends: [
    js.configs.recommended,
    ...tseslint.configs.recommended,
    eslintPluginPrettierRecommended,
  ],
  files: ["**/*.{ts,tsx,js,jsx}"], // eslint 检测的文件,根据需要自行设置
  ignores: ["dist"],
  languageOptions: {
    ecmaVersion: 2020,
    globals: globals.browser,
  },
  plugins: {
   // "react-hooks": reactHooks,
   // "react-refresh": reactRefresh,
  },
  rules: {
    ...reactHooks.configs.recommended.rules,
    // "react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
    "prettier/prettier": "warn", // 默认为 error
    "arrow-body-style": "off",
    "prefer-arrow-callback": "off",

    "@typescript-eslint/no-explicit-any": "off", // allow any type
  },
});

eslint-plugin-react-hookseslint-plugin-react-refresh 为 react 相关规则插件,可根据项目框架自行设置 plugins。

验证 eslint 和 prettier 的正确运作

image

eslint-plugin-react-hooks 不兼容 eslint9 处理

eslint-plugin-react-hooks 若需要兼容 eslint9,需安装 rc 版本

npm i eslint-plugin-react-hooks@^5.1.0-rc.0 -D

标签:ESlint8,plugin,hooks,TS,js,react,prettier,eslint,Prettier
From: https://www.cnblogs.com/jsonq/p/18357943

相关文章

  • 6.第二天(第二部分):Working with Signatures and Alerts
    signature类型built-insignatures:内建的cisco本身自带的tunedsignatures:调整过的customsignatures:自定义的5.0以后内建了1000多个默认signature,不能重命名或者删除这些内建的signature,你可以retire(退休)这些signature,这样就在引擎里边删除了,但是在signature配置列......
  • CF895B XK Segments 题解 二分
    题目链接:https://codeforces.com/problemset/problem/895/B题目大意给你一个长度为\(n\)的数列\(a_1,a_2,\ldots,a_n\)。求数列中存在多少个不同的下标对\((i,j)\)满足如下条件:\(a_i\lea_j\)并且恰好有\(k\)个整数\(y\)满足\(a_i\ley\lea_j\)且\(y\)......
  • 安装Toolkits,使用prefetch下载SRA数据库
    准备安装Toolkits建议conda安装,命令如下。(兼容性还行,没必要新建环境)condainstall-cbiocondasra-tools注意:使用时记得先激活conda环境。直接安装,请参考:SRAToolKit(sra-tools)的安装和使用配置prefetch下载路径prefetch的默认目录是配置Toolkits的路径,非常建议更......
  • Ubuntu 22.04 LTS 环境下部署 Docker 服务
    sudosystemctlstopapparmor.servicesudosystemctldisableapparmor.servicesudoufwdisable#Uninstallallconflictingpackages.sudoaptremove-ydocker.iodocker-docdocker-composedocker-compose-v2podman-dockercontainerdrunc#SetupDocker&#......
  • WebSockets:原理、握手及代码实现
    1.WebSockets原理WebSockets是HTML5标准的一部分,旨在为Web应用提供全双工通信能力。与传统的HTTP请求不同,WebSockets连接一旦建立,就可以在客户端和服务器之间自由传输数据,而不再需要每次通信都重新建立连接。工作流程:建立连接:客户端通过HTTP协议发起WebSocket握......
  • P5836 [USACO19DEC] Milk Visits S(树上并查集)
    核心思路对于相同颜色且相邻的点合并。若不在同一集合,则0若在同一集合,同色1异色0AC代码#include<bits/stdc++.h>usingnamespacestd;intfa[1145141];charcol[1145141];intn,m;intfind(intx){ if(x==fa[x]) returnx; returnfa[x]=find(fa[x]);}v......
  • 【Java毕设选题推荐】基于SpringBoot的springbootstone音乐播放器的设计与实现
    前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务......
  • prettier配置
    配置Prettier在VSCode中自动格式化代码的教程1.安装PrettierVSCode插件打开VSCode。点击左侧活动栏的扩展市场图标(或按Ctrl+Shift+X)。在搜索栏中输入Prettier-Codeformatter。找到插件并点击Install安装它。2.配置VSCode设置确保VSCode配置正确,使......
  • cats的二分答案
    可以证明在k次二分后区间长度最多只有两种,且差最多为1(符合直觉的结论)可以将二分视为对数的划分,而与l和r的取值无关用unordered_map时常会出现奇怪的问题,改成map就好了点击查看代码#include<bits/stdc++.h>usingnamespacestd;longlongK;map<longlong,longlong>q[1......
  • [题解 hduoj-7522] 2024HDU 暑假多校7 - cats 的最小生成树
    原题链接题意有一个有重边的无向图,每次找到它的最小生成树,并删除生成树的边,直到不存在最小生成树,问被每条边在第几次被删除.思路考虑用类似Kruskal算法,但是是遍历一遍所有边,同时处理出来所有的生成树.具体这样做:如Kruskal一样,把所有边按边权排序,......