Movatterモバイル変換


[0]ホーム

URL:


Skip to main content
Versions

Configure Rules

Tip

Rules are the core building block of ESLint. A rule validates if your code meets a certain expectation, and what to do if it does not meet that expectation. Rules can also contain additional configuration options specific to that rule.

ESLint comes with a large number ofbuilt-in rules and you can add more rules through plugins. You can modify which rules your project uses with either configuration comments or configuration files.

Rule Severities

To change a rule’s severity, set the rule ID equal to one of these values:

  • "off" or0 - turn the rule off.
  • "warn" or1 - turn the rule on as a warning (doesn’t affect exit code).
  • "error" or2 - turn the rule on as an error (exit code is 1 when triggered).

Rules are typically set to"error" to enforce compliance with the rule during continuous integration testing, pre-commit checks, and pull request merging because doing so causes ESLint to exit with a non-zero exit code.

If you don’t want to enforce compliance with a rule but would still like ESLint to report the rule’s violations, set the severity to"warn". This is typically used when introducing a new rule that will eventually be set to"error", when a rule is flagging something other than a potential buildtime or runtime error (such as an unused variable), or when a rule cannot determine with certainty that a problem has been found (when a rule might have false positives and need manual review).

Using configuration comments

To configure rules inside of a file using configuration comments, use a comment in the following format:

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

In this example,eqeqeq is turned off andcurly is turned on as an error. You can also use the numeric equivalent for the rule severity:

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

This example is the same as the last example, only it uses the numeric codes instead of the string values. Theeqeqeq rule is off and thecurly rule is set to be an error.

If a rule has additional options, you can specify them using array literal syntax, such as:

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

This comment specifies the"double" option for thequotes rule. The first item in the array is always the rule severity (number or string).

Configuration Comment Descriptions

Configuration comments can include descriptions to explain why the comment is necessary. The description must occur after the configuration and is separated from the configuration by two or more consecutive- characters. For example:

/* 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. */

Report unusedeslint inline config comments

To report unusedeslint inline config comments (those that don’t change anything from what was already configured), use thereportUnusedInlineConfigs setting. For example:

// eslint.config.jsimport{ defineConfig}from"eslint/config";exportdefaultdefineConfig([{linterOptions:{reportUnusedInlineConfigs:"error",},},]);

This setting defaults to"off".

This setting is similar to the--report-unused-inline-configs CLI option.

Using Configuration Files

To configure rules inside of aconfiguration file, use therules key along with an error level and any options you want to use. For example:

// eslint.config.jsimport{ defineConfig}from"eslint/config";exportdefaultdefineConfig([{rules:{eqeqeq:"off","no-unused-vars":"error","prefer-const":["error",{ignoreReadBeforeAssign:true}],},},]);

When more than one configuration object specifies the same rule, the rule configuration is merged with the later object taking precedence over any previous objects. For example:

import{ defineConfig}from"eslint/config";exportdefaultdefineConfig([{rules:{semi:["error","never"],},},{rules:{semi:["warn","always"],},},]);

Using this configuration, the final rule configuration forsemi is["warn", "always"] because it appears last in the array. The array indicates that the configuration is for the severity and any options. You can change just the severity by defining only a string or number, as in this example:

import{ defineConfig}from"eslint/config";exportdefaultdefineConfig([{rules:{semi:["error","never"],},},{rules:{semi:"warn",},},]);

Here, the second configuration object only overrides the severity, so the final configuration forsemi is["warn", "never"].

Important

Rules configured via configuration comments have the highest priority and are applied after all configuration files settings.

Rules from Plugins

To configure a rule that is defined within a plugin, prefix the rule ID with the plugin namespace and/.

In aconfiguration file, for example:

// eslint.config.jsimport examplefrom"eslint-plugin-example";import{ defineConfig}from"eslint/config";exportdefaultdefineConfig([{plugins:{example,},rules:{"example/rule1":"warn",},},]);

In this configuration file, the ruleexample/rule1 comes from the plugin namedeslint-plugin-example.

You can also use this format with configuration comments, such as:

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

In order to use plugin rules in configuration comments, your configuration file must load the plugin and specify it in theplugins object of your config. Configuration comments can not load plugins on their own.

Disabling Rules

Using configuration comments

  • Use with Caution. Disabling ESLint rules inline should be restricted and used only in situations with a clear andvalid reason for doing so. Disabling rules inline should not be the default solution to resolve linting errors.
  • Document the Reason. Provide a comment explaining the reason for disabling a particular rule after the-- section of the comment. Thisdocumentation should clarify why the rule is being disabled and why it is necessary in that specific situation.
  • Temporary Solutions. If a disable comment is added as a temporary measure to address a pressing issue, create a follow-up task to address the underlying problem adequately. This ensures that thedisable comment is revisited and resolved at a later stage.
  • Code Reviews and Pair Programming. Encourage team members to review each other’s code regularly. Code reviews can helpidentify the reasons behind disable comments and ensure that they are used appropriately.
  • Configurations. Whenever possible, prefer using ESLint configuration files over disable comments. Configurationfiles allow for consistent and project-wide rule handling.

To disable rule warnings in a part of a file, use block comments in the following format:

/* eslint-disable */alert("foo");/* eslint-enable */

You can also disable or enable warnings for specific rules:

/* eslint-disable no-alert, no-console */alert("foo");console.log("bar");/* eslint-enable no-alert, no-console */
Warning

/* eslint-enable */ without any specific rules listed causes all disabled rules to be re-enabled.

To disable rule warnings in an entire file, put a/* eslint-disable */ block comment at the top of the file:

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

You can also disable or enable specific rules for an entire file:

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

To ensure that a rule is never applied (regardless of any future enable/disable lines):

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

To disable all rules on a specific line, use a line or block comment in one of the following formats:

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

To disable a specific rule on a specific line:

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

To disable multiple rules on a specific line:

alert("foo");// eslint-disable-line no-alert, quotes, semi// eslint-disable-next-line no-alert, quotes, semialert("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");

All of the above methods also work for plugin rules. For example, to disableeslint-plugin-example’srule-name rule, combine the plugin’s name (example) and the rule’s name (rule-name) intoexample/rule-name:

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

Comments that disable warnings for a portion of a file tell ESLint not to report rule violations for the disabled code. ESLint still parses the entire file, however, so disabled code still needs to be syntactically valid JavaScript.

Comment descriptions

Configuration comments can include descriptions to explain why disabling or re-enabling the rule is necessary. The description must come after the configuration and needs to be separated from the configuration by two or more consecutive- characters. For example:

// 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");

Using configuration files

To disable rules inside of aconfiguration file for a group of files, use a subsequent config object with afiles key. For example:

// eslint.config.jsimport{ defineConfig}from"eslint/config";exportdefaultdefineConfig([{rules:{"no-unused-expressions":"error",},},{files:["*-test.js","*.spec.js"],rules:{"no-unused-expressions":"off",},},]);

Disabling Inline Comments

To disable all inline config comments, use thenoInlineConfig setting in your configuration file. For example:

// eslint.config.jsimport{ defineConfig}from"eslint/config";exportdefaultdefineConfig([{linterOptions:{noInlineConfig:true,},rules:{"no-unused-expressions":"error",},},]);

You can also use the--no-inline-config CLI option to disable rule comments, in addition to other in-line configuration.

Report unusedeslint-disable comments

To report unusedeslint-disable comments (those that disable rules which would not report on the disabled line), use thereportUnusedDisableDirectives setting. For example:

// eslint.config.jsimport{ defineConfig}from"eslint/config";exportdefaultdefineConfig([{linterOptions:{reportUnusedDisableDirectives:"error",},},]);

This setting defaults to"warn".

This setting is similar to--report-unused-disable-directives and--report-unused-disable-directives-severity CLI options.

Edit this page
© OpenJS Foundation and ESLint contributors,www.openjsf.org. Content licensed underMIT License.
Change Language

[8]ページ先頭

©2009-2025 Movatter.jp