ESLint v9正式发布,快来看看都有哪些变化

这篇具有很好参考价值的文章主要介绍了ESLint v9正式发布,快来看看都有哪些变化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

早上醒来,伸个懒腰,真舒服
打开手机,ESLint 竟然发布了 v9 大版本,瞬间来了精神
一般大版本更新都会伴随重大更改甚至是破坏性更改,ESLint 这艘巨轮发展至今已经是前端的标配,一起看看它这次的重大更新能带给我们什么惊喜。

ESLint v9正式发布,快来看看都有哪些变化,前端

更新点

不再支持 Node.js < v18.18.0 的版本

截止目前作者书写本文,Node.js 的 LTS 版本为 v20.12.1,最新 Node.js 版本为 v21.7.2
ESLint v9正式发布,快来看看都有哪些变化,前端
ESLint v9 与时俱进,放弃了对 Node.js v18.18.0 以下版本的支持。
默默看看自己电脑的 Node.js 版本
ESLint v9正式发布,快来看看都有哪些变化,前端
好嘛,还够不上最低版本,是时候升级 Node.js 版本了。
目前目前公司服务器上跑着的大部分都是 v16 版本的 Node.js,想必这波升级还得慎重点。
不过本地玩玩还是可以的!

全新的默认配置文件格式

ESLint v9 采用全新的配置文件:

  • eslint.config.js
  • eslint.config.mjs
  • eslint.config.cjs

并且现在的配置文件默认导出的是一个数组类型的配置对象,不再是以前对象形式的了,
数组的每一项都对应着一组规则,这也就更方便就行规则组合和不同文件的规则区分。
这里需要特别注意,示例如下:

// eslint.config.js
export default [
  {
    rules: {
      semi: "error",
      "prefer-const": "error"
    }
  }
];

并且数组的每一项具有如下几个属性组成:

  • name- 配置对象的名称。这在错误消息和配置检查器中使用,以帮助识别正在使用哪个配置对象。 (命名约定)
  • files- 一组 glob 模式,指示配置对象应应用到的文件。如果未指定,则配置对象适用于与任何其他配置对象匹配的所有文件。
  • ignores- 一组 glob 模式,指示配置对象不应应用于的文件。如果未指定,则配置对象适用于所有与files.
  • languageOptions- 包含与如何配置 JavaScript 进行 linting 相关的设置的对象。
    • ecmaVersion- 支持的 ECMAScript 版本。可以是任何年份(即2022)或版本(即5)。设置"latest"为最新支持的版本。 (默认:“latest”)
    • sourceType- JavaScript 源代码的类型。可能的值"script"适用于传统脚本文件、"module"ECMAScript 模块 (ESM) 和"commonjs"CommonJS 文件。 (默认值:"module"用于.js和.mjs文件;"commonjs"用于.cjs文件)
    • globals- 指定在 linting 期间应添加到全局范围的其他对象的对象。
    • parserparse()- 包含方法或方法的对象parseForESLint()。 (默认:espree)
    • parserOptions- 指定直接传递给解析器上的parse()or方法的附加选项的对象。parseForESLint()可用选项取决于解析器。
  • linterOptions- 包含与 linting 过程相关的设置的对象。
    • noInlineConfig- 指示是否允许内联配置的布尔值。
    • reportUnusedDisableDirectives- 严重性字符串,指示是否以及如何应跟踪和报告未使用的禁用和启用指令。对于旧版兼容性,true相当于"warn"和false相当于"off". (默认:“warn”)。
  • processorpreprocess()- 包含方法的对象postprocess()或指示插件内部处理器名称的字符串(即"pluginName/processorName")。
  • plugins- 包含插件名称到插件对象的名称-值映射的对象。当files指定时,这些插件仅适用于匹配的文件。
  • rules- 包含配置规则的对象。当指定files或ignores时,这些规则配置仅适用于匹配的文件。
  • settings- 包含应可用于所有规则的名称-值对信息的对象。

简单总结下变化点:
以前使用 extends来组合规则,现在使用数组的每一项来组合,所以 ESLint 官方才新出品了 @eslint/js包来导出 ESLint 默认规则。
而且,这会导致以前的 eslint的其他社区规范文件需要发布适用于 v9 版本的新规则。不过好在 ESLint 官方已经想到了这个问题,他们提供了一个 @eslint/eslintrc包,用于将现有的插件和预设转换为符合新版本规范的代码。示例如下:

import { FlatCompat } from "@eslint/eslintrc";
import path from "path";
import { fileURLToPath } from "url";

// mimic CommonJS variables -- not needed if using CommonJS
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const compat = new FlatCompat({
    baseDirectory: __dirname
});

export default [
    // mimic ESLintRC-style extends
    ...compat.extends("standard", "example"),

    // mimic environments
    ...compat.env({
        es2020: true,
        node: true
    }),

    // mimic plugins
    ...compat.plugins("airbnb", "react"),

    // translate an entire config
    ...compat.config({
        plugins: ["airbnb", "react"],
        extends: "standard",
        env: {
            es2020: true,
            node: true
        },
        rules: {
            semi: "error"
        }
    })
];

这将使我们很平滑额过渡到 v9 版本。

移除格式化代码相关的程序

在旧版本的 ESLint 中,可以使用它作代码风格约束,例如:尾随逗号,空格,空行等
这些规则可以让我们的代码风格一致,但是这些规则却与 ESLint 的核心功能有点相悖
因为 ESLint 主要的点是分析代码的语法错误而不应该是风格错误,所以风格检查有点画蛇添足了,况且现在有更加快速且强大的 prettier来做代码风格约束,所以 ESLint 的风格约束是时候放弃了。

删除格式化程序 替换 npm 包
checkstyle eslint-formatter-checkstyle
compact eslint-formatter-compact
jslint-xml eslint-formatter-jslint-xml
junit eslint-formatter-junit
tap eslint-formatter-tap
unix eslint-formatter-unix
visualstudio eslint-formatter-visualstudio

以上原本内置于 ESLint 内部的格式化程序将全部被删除,取而代之的是后面的 npm 包,
如果你仍然需要使用 ESLint 的风格格式化,则需要自己安装对应的包,启用对应的规则。
不过,prettier可能是一个更好的选择。

其他更新点

  • 删除require-jsdoc和valid-jsdoc规则
  • eslint:recommended已经升级
  • –quiet不再运行规则集"warn"
  • –output-file现在即使输出为空也会将文件写入磁盘
  • 没有模式传递到 CLI 时行为发生变化
  • /* eslint */仅具有严重性的注释现在保留配置文件中的选项
  • /* eslint */现在不允许对同一规则发表多个评论
  • 更严格的/* exported */解析
  • no-constructor-return并且no-sequences规则模式更加严格
  • no-implicit-coercion默认情况下新签入
  • 区分大小写的标志no-invalid-regexp
  • varsIgnorePattern选项no-unused-vars不再适用于 catch 参数
  • no-restricted-imports现在接受多个具有相同配置条目name
  • “eslint:recommended”"eslint:all"平面配置中不再接受字符串
  • no-inner-declarations有一个新的默认行为和一个新选项
  • no-unused-vars现在默认caughtErrors为"all"
  • no-useless-computed-key默认情况下标记类中不必要的计算成员名称
  • camelcase允许选项仅接受字符串数组

因为这些更新点涉及面比较狭窄,这里不做过多阐述,感兴趣的可以自行查看。

总结

本文主要向大家展示了 ESLint v9 版本的更新点,希望本文可以帮助你更好的迁移到 ESLint v9。文章来源地址https://www.toymoban.com/news/detail-852458.html

到了这里,关于ESLint v9正式发布,快来看看都有哪些变化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v9.0版已发布

    MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持 UDP  、 TCP  、 WebSocket  三种协议,支持 iOS、Android、H5、标准Java平台 ,服务端基于Netty编写。 工程开源地址是: 1) Gitee码云地址:https://gitee.com/jackjiang/MobileIMSDK 2) Github托管地

    2024年02月15日
    浏览(39)
  • 文档管理是什么?都有哪些?

    很多做服务端开发的同学,基本都用Postman来测试接口,虽然Postman能支撑日常工作,但是总感觉还是少了点什么,比如需要Swagger来维护接口文档,需要手动发送接口变更通知。而今天给大家介绍一款国产化接口管理工具eolink,它究竟是何方神圣?Eolink和Postman相比到底怎么样?

    2024年02月02日
    浏览(63)
  • 常见测试技术都有哪些?

    测试技术是用于评估系统或组件的方法,目的是发现它是否满足给定的要求。系统测试有助于识别缺口、错误,或与实际需求不同的任何类型的缺失需求。测试技术是测试团队根据给定的需求评估已开发软件所使用的最佳实践。这些技术可以确保产品或软件的整体质量,包括

    2024年02月02日
    浏览(43)
  • MySQL中都有哪些锁?

    在计算机系统中,锁( Lock )是一种同步机制,用于控制对共享资源的访问。它确保在任何给定时间内只有一个线程能够访问受保护的共享资源,从而避免了由并发访问导致的数据竞争和不一致问题。 同样,在数据库系统中,锁也扮演着重要角色,是其与文件系统不同的关键

    2024年02月08日
    浏览(82)
  • js--事件都有哪些

    事件名—描述 事件具体作用描述 onclick—点击 鼠标点击事件,当鼠标左键点击时候会触发。 ondbclick—双击 当鼠标双击时候会触发,并有一个时间间隔,但不能太大。 onmousedown—按下 鼠标按下事件,当鼠标左中右键按下的时候触发。 onmouseup—抬起 鼠标抬起事件,当鼠标左中

    2024年02月12日
    浏览(44)
  • java 中都有哪些引用类型?

    Java中 默认声明的就是强引用 ,比如: 只要 强引用存在,垃圾回收器将永远不会回收被引用的对象 。如果 想被回收 ,可以将对象置为 null ; 在内存足够的时候,软引用不会被回收,只有在内存不足时,系统才会回收软引用对象,如果回收了软引用对象之后仍然没有足够的

    2023年04月26日
    浏览(57)
  • 全球都有哪些高光谱遥感卫星?

      本文对目前国内外的 高光谱遥感卫星 加以汇总,并对主要卫星进行 参数 介绍与对比。 目录 1 引言 2 全球主要星载高光谱数据介绍 2.1 EOS AM-1 MODIS 2.2 MightySat-2.1 FTHSI 2.3 EO-1 Hyperion 2.4 PROBA-1 CHRIS 2.5 ADEOS-2 GLI 2.6 环境一号 HJ-1A卫星 2.7 珠海一号 OHS高光谱卫星 2.8 高分五号 可见

    2024年02月12日
    浏览(44)
  • Files的常用方法都有哪些?

    Files方法 方法说明 Files. exists() 检测文件路径是否存在。 Files. createFile() 创建文件。 Files. createDirectory() 创建文件夹。 Files. delete() 删除一个文件或目录。 Files. copy() 复制文件。 Files. move() 移动文件。 Files. size() 查看文件个数。 Files. read() 读取文件。 Files. write() 写入文件。

    2023年04月11日
    浏览(40)
  • WPF 绑定binding都有哪些事件

    主要包含以下几个事件: 1. UpdateSourceTrigger:用于控制数据绑定如何更新源数据的事件 PropertyChanged:每当目标属性的值更改时,将立即更新源属性。 LostFocus:当目标元素失去焦点时,更新源属性。 Explicit:只有在调用BindingExpression.UpdateSource方法时才会更新源属性。 Default:与

    2024年02月05日
    浏览(57)
  • vue组件之间的通信都有哪些?

    vue组件之间的通信都有哪些? 父子组件通信: Props:父组件通过props将数据传递给子组件,子组件通过props接收父组件传递的数据。 Events:子组件通过$emit触发事件,并将数据传递给父组件,父组件通过监听子组件的事件来接收数据。 兄弟组件通信: 共同的父组件作为中介:

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包