ESLint

ESLint

ESLint 是一个针对 JS 的代码风格检查工具,当不满足其要求的风格时,会给予警告或错误。

官网:https://eslint.org/

中文网:https://eslint.nodejs.cn/

安装使用

  1. 在你的项目中安装 ESLint 包:

    npm install --save-dev eslint @eslint/js
    
  2. 在项目根目录中添加 eslint.config.js 文件,并导出一个配置对象的数组。

    eslint.config.js

    import js from "@eslint/js";
    
    export default [
        js.configs.recommended,
    
       {
           rules: {
               "no-unused-vars": "warn",
               "no-undef": "warn"
           }
       }
    ];
    
  3. 使用 ESLint CLI 进行代码检查:

    npx eslint project-dir/ file1.js
    
  4. 每次使用 ESLint CLI 非常麻烦,为了可以实时看到检查,通常配合编辑器插件使用。

    在 vscode 中安装 ESLint 插件,该工具会自动检查工程中的 JS 文件。

  5. 如果安装了 Prettier 插件,请禁用,否则可能会出现问题。

如果你的项目在其 package.json 文件中没有指定 "type":"module",则 eslint.config.js 必须是 CommonJS 格式,否则插件无法起作用,或者配置文件使用 .mjs.cjs 做扩展名。

快速安装

你可以使用以下命令安装和配置 ESLint:

npm init @eslint/config@latest

运行 npm init @eslint/config 后,你的目录中将有一个 eslint.config.js(或 eslint.config.mjs)文件。在其中,你将看到一些配置如下的规则:

import globals from "globals";
import pluginJs from "@eslint/js";


/** @type {import('eslint').Linter.Config[]} */
export default [
  {languageOptions: { globals: globals.browser }},
  pluginJs.configs.recommended,
];

配置

配置对象

每个配置对象都包含 ESLint 需要在一组文件上执行的所有信息。每个配置对象都由以下属性组成:

name

配置对象的名称。这在错误消息和配置检查器中使用,以帮助识别正在使用哪个配置对象。

files

指示配置对象应应用于的文件的通配符模式数组。如果未指定,则配置对象适用于与任何其他配置对象匹配的所有文件。

例如,你可能希望某些规则仅适用于 src 目录中的文件:

在这里插入图片描述

可以看到 other 文件夹下的 js 文件并没有检查,files 是一个数组,可以提供多个 minimatch ;如果提供的是一个空数组将忽略所有文件。

ignores

指示配置对象不应应用于的文件的通配符模式数组。如果未指定,则配置对象适用于 files 匹配的所有文件。如果在配置对象中使用 ignores 而没有任何其他键,则模式将充当全局忽略。

在这里插入图片描述

可以看到 ESLint 忽略了 src 文件夹下的 js 文件。

更多关于 filesignores 配置请查看文档

languageOptions

ESLint 允许你指定你想要支持的 JavaScript 语言选项。默认情况下,ESLint 需要最新的第 4 阶段 ECMAScript 语法和 ECMAScript 模块 (ESM) 模式。你可以使用 languageOptions 键并指定以下一个或多个属性来覆盖这些设置。

ecmaVersion

指示正在检查的代码的 ECMAScript 版本,确定语法和可用的全局变量。对于 ECMAScript 3 和 5,分别设置为 35。否则,你可以使用 2015 之间的任何年份来表示。在大多数情况下,我们建议使用默认值 "latest" 以确保你始终使用最新的 ECMAScript 版本。

在这里插入图片描述

sourceType

指示正在使用的 JavaScript 文件的模式。可能的值为:

  • "module"

    默认值,ESM 模块(ecmaVersion35 时无效)。你的代码具有模块作用域并在严格模式下运行。

  • "commonjs"

    CommonJS 模块(如果你的代码使用 require(),则很有用)。你的代码具有顶层函数作用域并在非严格模式下运行。

  • "script"

    非模块。你的代码具有共享的全局作用域并在非严格模式下运行。

在这里插入图片描述

在 commonjs 下 require() 就不会报错:

在这里插入图片描述

parserOptions

如果你使用内置的 ESLint 解析器,你还可以通过指定 languageOptions.parserOptions 键来更改 ESLint 解释代码的方式。默认情况下,所有选项均为 false

  • allowReserved

    允许使用保留字作为标识符(如果 ecmaVersion3)。

  • ecmaFeatures

    一个对象,指示你要使用哪些附加语言功能:

    • globalReturn

      允许全局范围内的 return 语句。

    • impliedStrict

      启用全局严格模式(如果 ecmaVersion5 或更大)。

    • jsx

      启用 JSX。

globals

指定全局变量,属性设置为一个对象,该对象包含为要使用的每个全局变量命名的键。对于每个全局变量键,设置相应的值等于 "writable" 以允许变量被覆盖或 "readonly" 不允许覆盖或 "off" 来禁用全局变量。

在这里插入图片描述

我们可以安装 globals 依赖,为特定环境额外启用所有全局变量。

在这里插入图片描述

另外还可以在文件中定义行内全局变量:

在这里插入图片描述

rules

规则是 ESLint 的核心构建块。规则验证你的代码是否满足特定期望,以及如果不满足该期望该怎么办。规则还可以包含特定于该规则的其他配置选项。

ESLint 自带大量的内置规则,你可以通过插件添加更多的规则。你可以使用配置注释或配置文件修改你的项目使用的规则。

要更改规则的严重性,请将规则 ID 设置为以下值之一:

  • "off"0 - 关闭规则。
  • "warn"1 - 将规则作为警告打开(不影响退出代码)。
  • "error"2 - 将规则作为错误打开(触发时退出代码为 1)。

除了在配置对象中设置,还可以在文件中配置注释:

在这里插入图片描述

具体每个规则的配置请参考文档

禁用规则
使用配置注释

要在文件的一部分中禁用规则警告,请使用以下格式的块注释:

在这里插入图片描述

eqeqeq 被设置为 error,在使用 == 应该报错,但使用注释禁用规则后,没有报错,还可以使用以下块注释禁用某些规则:

在这里插入图片描述

整个文件禁用规则:

/* eslint-disable */
alert('foo');

你还可以禁用或启用整个文件的特定规则:

/* eslint-disable no-alert */
alert('foo');

确保永远不会应用规则(无论将来有任何启用/禁用行):

/* eslint no-alert: "off" */
alert('foo');

要禁用特定行上的所有规则,请使用以下格式之一的行或块注释:

alert('foo'); // eslint-disable-line

// eslint-disable-next-line
alert('foo');

/* eslint-disable-next-line */
alert('foo');

alert('foo'); /* eslint-disable-line */

要禁用特定行上的特定规则:

alert('foo'); // eslint-disable-line no-alert

// eslint-disable-next-line no-alert
alert('foo');

alert('foo'); /* eslint-disable-line no-alert */

/* eslint-disable-next-line no-alert */
alert('foo');

要禁用特定行上的多个规则:

alert('foo'); // eslint-disable-line no-alert, quotes, semi

// eslint-disable-next-line no-alert, quotes, semi
alert('foo');

alert('foo'); /* eslint-disable-line no-alert, quotes, semi */

/* eslint-disable-next-line no-alert, quotes, semi */
alert('foo');

/* eslint-disable-next-line
  no-alert,
  quotes,
  semi
*/
alert('foo');
使用配置文件

要在配置文件中为文件组禁用规则,请使用带有 files 键的后续配置对象。

禁用内联配置注释

要禁用所有内联配置注释,请在配置文件中使用 noInlineConfig 设置。例如:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值