原文地址:https://mp.weixin.qq.com/s/YsR9NGIUyBANFUxceJdfqw
最近,ESLint 开始发布 v7.0.0alpha 版本,据官方描述,v7.0.0ESLint 的一个重要的里程碑版本,你可以在 Github 的项目看板中看到 v7.0.0 将计划支持的所有内容。

xuhuayu.cn
下面我就带大家来看看将要有哪些更改,以便你可以更好地为更改做准备,并了解为什么需要进行这些更改。

放弃对 Node.js v8.x 的支持

Node.js v8.x 于2019年12月正式停止维护,因此 v7.0.0 删除了对该版本 Node.js 的支持。

ESLint 类替代 CLIEngine 类

ESLint 的早期开始,我们提供了一个 CLIEngine 类,允许开发人员创建 ESLint 的一些扩展,例如编辑器插件、构建工具插件等等。CLIEngine 类为 ESLint 提供支持,多年来一直是该项目的重要组成部分。

不幸的是, CLIEngine 已经成为许多新特性的主要阻碍。最重要的是,因为CLIEngine 类是同步工作的,所以在 ESLint 的核心中不可能执行任何类型的异步操作。这一限制意味着诸如文件的并行连接和加载 ECMAScript 模块(ESM)文件等功能无法实现。

在我们决定用新的 ESLint 类替换 CLIEngine 类之前,考虑了几种方法。ESLint 类将包含异步方法,作为将异步功能引入核心的起点。最开始, ESLint 类只是对 CLIEngine 的一个封装,随着时间的推移,我们将系统地开始在 ESLint 类中编写新功能。最终, ESLintCLIEngine 类将完全独立。

v7.0.0CLIEngine类将被弃用,但不会删除。我们会在将来的主要版本中将 CLIEngine 删除(不用担心,在这样做之前,我们会给您很多提示)。

弃用 Node.js / CommonJS 特定的规则

因此,以下规则将在 core 中被弃用:

core 中管理规则是正在进行的 ESLint 维护的重要组成部分。随着项目的发展,我们维护的规则数量也在增加。我们检查了所有当前规则,并确定特定于 Node.js / CommonJS 的规则没有必要包含在未来的 core 中。特别是 Node.js 更倾向于 ESM 作为首选模块系统时。

  • callback-return
  • global-require
  • handle-callback-err
  • no-buffer-constructor
  • no-mixed-requires
  • no-new-require
  • no-path-concat
  • no-process-env
  • no-process-exit
  • no-restricted-modules

这些规则将移至 eslint-plugin-node 项目。我们建议用户用插件的方式引入这些规则。这些规则将保留在 ESLint v7.0.0 中,并将在以后的 major 版本中删除。

指令注释中的描述

指令注释描述允许你给自己和其他开发人员留下关于为什么要包含注释的说明。例如:

/* eslint-disable no-new -- this class has a side-effect in the constructor. */

对 ~/.eslintrc 配置文件的使用警告

v6.7.0 中已弃用主目录中的配置文件,并且在 v7.0.0 中使用时会发出警告。长期以来,此功能一直使 ESLint 用户感到困惑,尤其是因为如果找不到其他配置文件, ESLint 只会在主目录中查找配置文件。自引入主目录配置文件以来, ESLint 中的配置系统已发生了很大变化,并且由于具有额外的灵活性,我们认为还有许多比主目录配置文件更清晰的其他配置 ESLint 的选项。

v8.0.0 中将删除对主目录配置文件的支持。

使用–config或时更新基本路径–ignore-path

v7.0.0 之前的版本中,ESLint 将解析配置文件中的引用,或者忽略相对于传递给 --config-—ignore-path 的文件位置相关的文件。这没有多大意义,并且会给用户带来混乱和意外行为。在 v7.0.0 中,配置文件和忽略使用 --config--ignore-path 传递的文件使用当前工作目录作为它们的基本路径。

从配置文件目录加载的插件

v7.0.0中,将相对于引用插件的配置加载插件。

配置文件中的文件扩展名

ESLint v7.0.0 将读取 overrides 配置部分中的全局模式,以确定要处理的文件。在 v7.0.0之前,您需要提供 --ext 命令行标志以指定要添加到 lint 的其他文件。

更新了默认 ignore 模式

除了当前的默认值, ESLint 的默认忽略模式将更改为:

  • 不忽略 .eslintrc.js
  • 不忽略 /bower_components/*
  • 在子目录中忽略 node_modules/*

更严格的 RuleTester

RuleTester 类添加一些额外的检查,以确保规则的正常工作:

  • 如果规则使用非标准 node.startnode.end 属性,则失败,ESLint 支持的所有解析器可能未提供这些非标准或属性。
  • 自动修复程序规则必须测试其修复程序的输出。
  • 现在测试代码存在语法错误的地方将失败。
  • 如果测试规范包含未知属性,则测试失败。

安装 v7.0.0 的预览版本

如果您想测试 v7.0.0 的开发过程,则可以使用 next 标记从 npm 安装:

npm i eslint@next --save-dev

更多内容请关注官方文档:https://eslint.org/