版本

配置规则

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

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

规则严重性

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

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

规则通常设置为 "error" 以在持续集成测试、预提交检查和拉取请求合并期间强制执行规则的合规性,因为这样做会导致 ESLint 以非零退出代码退出。

如果您不想强制执行规则的合规性,但仍希望 ESLint 报告规则的违规行为,请将严重性设置为 "warn"。这通常用于引入最终将设置为 "error" 的新规则时,当规则标记的内容不是潜在的构建时或运行时错误(例如未使用的变量)时,或者当规则无法确定地确定已发现问题时(当规则可能存在误报并需要手动审查时)。

使用配置注释

要在文件中使用配置注释配置规则,请使用以下格式的注释

/* eslint eqeqeq: "off", curly: "error" */

在此示例中,eqeqeq 已关闭,curly 已打开为错误。您还可以使用规则严重性的数字等效项

/* eslint eqeqeq: 0, curly: 2 */

此示例与上一个示例相同,只是它使用数字代码而不是字符串值。eqeqeq 规则已关闭,curly 规则设置为错误。

如果规则有其他选项,您可以使用数组文字语法指定它们,例如

/* eslint quotes: ["error", "double"], curly: 2 */

此注释为quotes规则指定“double”选项。数组中的第一项始终是规则严重性(数字或字符串)。

配置注释说明

配置注释可以包含说明以解释注释为何必要。说明必须出现在配置之后,并通过两个或多个连续的 - 字符与配置分隔。例如

/* eslint eqeqeq: "off", curly: "error" -- Here's a description about why this configuration is necessary. */
/* eslint eqeqeq: "off", curly: "error"
    --------
    Here's a description about why this configuration is necessary. */
/* eslint eqeqeq: "off", curly: "error"
 * --------
 * This will not work due to the line above starting with a '*' character.
 */

使用配置文件

要在配置文件中配置规则,请使用 rules 键以及您要使用的错误级别和任何选项。例如

export default [
    {
        rules: {
            eqeqeq: "off",
            "no-unused-vars": "error",
            "prefer-const": ["error", { "ignoreReadBeforeAssign": true }]
        }
    }
];

当多个配置对象指定相同的规则时,规则配置将合并,后面的对象优先于任何先前的对象。例如

export default [
    {
        rules: {
            semi: ["error", "never"]
        }
    },
    {
        rules: {
            semi: ["warn", "always"]
        }
    }
];

使用此配置,semi 的最终规则配置为 ["warn", "always"],因为它在数组中最后出现。数组指示配置用于严重性和任何选项。您可以只通过定义字符串或数字来更改严重性,例如本示例所示

export default [
    {
        rules: {
            semi: ["error", "never"]
        }
    },
    {
        rules: {
            semi: "warn"
        }
    }
];

在这里,第二个配置对象仅覆盖严重性,因此 semi 的最终配置为 ["warn", "never"]

来自插件的规则

要配置在插件中定义的规则,请在规则 ID 前缀插件命名空间和 /

例如,在配置文件

// eslint.config.js
import example from "eslint-plugin-example";

export default [
    {
        plugins: {
            example
        },
        rules: {
            "example/rule1": "warn"
        }
    }
];

在此配置文件中,规则 example/rule1 来自名为 eslint-plugin-example 的插件。

您也可以将此格式与配置注释一起使用,例如

/* eslint "example/rule1": "error" */

禁用规则

使用配置注释

  • 谨慎使用。应限制内联禁用 ESLint 规则,并且仅在有明确且有效的理由时才使用。内联禁用规则不应是解决 lint 错误的默认解决方案。
  • 记录原因。在注释的 -- 部分之后提供一个注释,解释禁用特定规则的原因。此文档应阐明禁用规则的原因以及在特定情况下禁用规则的原因。
  • 临时解决方案。如果禁用注释作为临时措施添加以解决紧急问题,请创建一个后续任务以充分解决根本问题。这确保了在稍后阶段重新审视和解决禁用注释。
  • 代码审查和结对编程。鼓励团队成员定期审查彼此的代码。代码审查可以帮助确定禁用注释背后的原因,并确保它们得到适当的使用。
  • 配置。只要有可能,就优先使用 ESLint 配置文件而不是禁用注释。配置文件允许一致且项目范围的规则处理。

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

/* eslint-disable */

alert('foo');

/* eslint-enable */

您还可以禁用或启用特定规则

/* eslint-disable no-alert, no-console */

alert('foo');
console.log('bar');

/* eslint-enable no-alert, no-console */

要禁用整个文件中的规则警告,请在文件顶部放置一个 /* eslint-disable */ 块注释

/* 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');

所有上述方法也适用于插件规则。例如,要禁用 eslint-plugin-examplerule-name 规则,请将插件名称 (example) 和规则名称 (rule-name) 组合成 example/rule-name

foo(); // eslint-disable-line example/rule-name
foo(); /* eslint-disable-line example/rule-name */

注释说明

配置注释可以包含说明以解释禁用或重新启用规则的原因。说明必须出现在配置之后,并且需要通过两个或多个连续的 - 字符与配置分隔。例如

// eslint-disable-next-line no-console -- Here's a description about why this configuration is necessary.
console.log('hello');

/* eslint-disable-next-line no-console --
 * Here's a very long description about why this configuration is necessary
 * along with some additional information
**/
console.log('hello');

使用配置文件

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

// eslint.config.js
export default [
    {
        rules: {
            "no-unused-expressions": "error"
        }
    },
    {
        files: ["*-test.js","*.spec.js"],
        rules: {
            "no-unused-expressions": "off"
        }
    }
];

禁用内联注释

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

// eslint.config.js
export default [
    {
        linterOptions: {
            noInlineConfig: true
        },
        rules: {
            "no-unused-expressions": "error"
        }
    }
];

您还可以使用--no-inline-config CLI 选项禁用规则注释,以及其他内联配置。

报告未使用的 eslint-disable 注释

要报告未使用的 eslint-disable 注释,请使用 reportUnusedDisableDirectives 设置。例如

// eslint.config.js
export default [
    {
        linterOptions: {
            reportUnusedDisableDirectives: "error"
        }
    }
];

此设置默认为 "warn"

此设置类似于--report-unused-disable-directives--report-unused-disable-directives-severity CLI 选项。

更改语言