Rules
Rules in ESLint are grouped by category to help you understand their purpose.
No rules are enabled by default. The "extends": "eslint:recommended"
property in a configuration file enables rules that report common problems, which have a check mark below.
The --fix
option on the command line automatically fixes problems (currently mostly whitespace) reported by rules which have a wrench below.
Possible Errors
These rules relate to possible syntax or logic errors in JavaScript code:
enforce “for” loop update clause moving the counter in the right direction. |
|||
enforce |
|||
disallow |
|||
disallow comparing against -0 |
|||
disallow assignment operators in conditional expressions |
|||
disallow the use of |
|||
disallow constant expressions in conditions |
|||
disallow control characters in regular expressions |
|||
disallow the use of |
|||
disallow duplicate arguments in |
|||
disallow duplicate keys in object literals |
|||
disallow duplicate case labels |
|||
disallow empty block statements |
|||
disallow empty character classes in regular expressions |
|||
disallow reassigning exceptions in |
|||
disallow unnecessary boolean casts |
|||
disallow unnecessary parentheses |
|||
disallow unnecessary semicolons |
|||
disallow reassigning |
|||
disallow variable or |
|||
disallow invalid regular expression strings in |
|||
disallow irregular whitespace outside of strings and comments |
|||
disallow calling global object properties as functions |
|||
disallow calling some |
|||
disallow multiple spaces in regular expressions |
|||
disallow sparse arrays |
|||
disallow template literal placeholder syntax in regular strings |
|||
disallow confusing multiline expressions |
|||
disallow unreachable code after |
|||
disallow control flow statements in |
|||
disallow negating the left operand of relational operators |
|||
require calls to |
|||
enforce valid JSDoc comments |
|||
enforce comparing |
Best Practices
These rules relate to better ways of doing things to help you avoid problems:
enforce getter and setter pairs in objects |
|||
enforce |
|||
enforce the use of variables within the scope they are defined |
|||
enforce that class methods utilize |
|||
enforce a maximum cyclomatic complexity allowed in a program |
|||
require |
|||
enforce consistent brace style for all control statements |
|||
require |
|||
enforce consistent newlines before and after dots |
|||
enforce dot notation whenever possible |
|||
require the use of |
|||
require |
|||
disallow the use of |
|||
disallow the use of |
|||
disallow lexical declarations in case clauses |
|||
disallow division operators explicitly at the beginning of regular expressions |
|||
disallow |
|||
disallow empty functions |
|||
disallow empty destructuring patterns |
|||
disallow |
|||
disallow the use of |
|||
disallow extending native types |
|||
disallow unnecessary calls to |
|||
disallow unnecessary labels |
|||
disallow fallthrough of |
|||
disallow leading or trailing decimal points in numeric literals |
|||
disallow assignments to native objects or read-only global variables |
|||
disallow shorthand type conversions |
|||
disallow variable and |
|||
disallow the use of |
|||
disallow |
|||
disallow the use of the |
|||
disallow labeled statements |
|||
disallow unnecessary nested blocks |
|||
disallow |
|||
disallow magic numbers |
|||
disallow multiple spaces |
|||
disallow multiline strings |
|||
disallow |
|||
disallow |
|||
disallow |
|||
disallow octal literals |
|||
disallow octal escape sequences in string literals |
|||
disallow reassigning |
|||
disallow the use of the |
|||
disallow variable redeclaration |
|||
disallow certain properties on certain objects |
|||
disallow assignment operators in |
|||
disallow unnecessary |
|||
disallow |
|||
disallow assignments where both sides are exactly the same |
|||
disallow comparisons where both sides are exactly the same |
|||
disallow comma operators |
|||
disallow throwing literals as exceptions |
|||
disallow unmodified loop conditions |
|||
disallow unused expressions |
|||
disallow unused labels |
|||
disallow unnecessary calls to |
|||
disallow unnecessary concatenation of literals or template literals |
|||
disallow unnecessary escape characters |
|||
disallow redundant return statements |
|||
disallow |
|||
disallow specified warning terms in comments |
|||
disallow |
|||
require using Error objects as Promise rejection reasons |
|||
enforce the consistent use of the radix argument when using |
|||
disallow async functions which have no |
|||
require |
|||
require parentheses around immediate |
|||
require or disallow “Yoda” conditions |
Strict Mode
These rules relate to strict mode directives:
require or disallow strict mode directives |
Variables
These rules relate to variable declarations:
require or disallow initialization in variable declarations |
|||
disallow |
|||
disallow deleting variables |
|||
disallow labels that share a name with a variable |
|||
disallow specified global variables |
|||
disallow variable declarations from shadowing variables declared in the outer scope |
|||
disallow identifiers from shadowing restricted names |
|||
disallow the use of undeclared variables unless mentioned in |
|||
disallow initializing variables to |
|||
disallow the use of |
|||
disallow unused variables |
|||
disallow the use of variables before they are defined |
Node.js and CommonJS
These rules relate to code running in Node.js, or in browsers with CommonJS:
require |
|||
require |
|||
require error handling in callbacks |
|||
disallow use of the Buffer() constructor |
|||
disallow |
|||
disallow |
|||
disallow string concatenation with |
|||
disallow the use of |
|||
disallow the use of |
|||
disallow specified modules when loaded by |
|||
disallow synchronous methods |
Stylistic Issues
These rules relate to style guidelines, and are therefore quite subjective:
enforce linebreaks after opening and before closing array brackets |
|||
enforce consistent spacing inside array brackets |
|||
enforce line breaks after each array element |
|||
enforce consistent spacing inside single-line blocks |
|||
enforce consistent brace style for blocks |
|||
enforce camelcase naming convention |
|||
enforce or disallow capitalization of the first letter of a comment |
|||
require or disallow trailing commas |
|||
enforce consistent spacing before and after commas |
|||
enforce consistent comma style |
|||
enforce consistent spacing inside computed property brackets |
|||
enforce consistent naming when capturing the current execution context |
|||
require or disallow newline at the end of files |
|||
require or disallow spacing between function identifiers and their invocations |
|||
require function names to match the name of the variable or property to which they are assigned |
|||
require or disallow named |
|||
enforce the consistent use of either |
|||
enforce consistent line breaks inside function parentheses |
|||
disallow specified identifiers |
|||
enforce minimum and maximum identifier lengths |
|||
require identifiers to match a specified regular expression |
|||
enforce consistent indentation |
|||
enforce the consistent use of either double or single quotes in JSX attributes |
|||
enforce consistent spacing between keys and values in object literal properties |
|||
enforce consistent spacing before and after keywords |
|||
enforce position of line comments |
|||
enforce consistent linebreak style |
|||
require empty lines around comments |
|||
enforce a maximum depth that blocks can be nested |
|||
enforce a maximum line length |
|||
enforce a maximum number of lines per file |
|||
enforce a maximum depth that callbacks can be nested |
|||
enforce a maximum number of parameters in function definitions |
|||
enforce a maximum number of statements allowed in function blocks |
|||
enforce a maximum number of statements allowed per line |
|||
enforce newlines between operands of ternary expressions |
|||
require constructor names to begin with a capital letter |
|||
require parentheses when invoking a constructor with no arguments |
|||
require a newline after each call in a method chain |
|||
disallow |
|||
disallow bitwise operators |
|||
disallow |
|||
disallow inline comments after code |
|||
disallow |
|||
disallow mixed binary operators |
|||
disallow mixed spaces and tabs for indentation |
|||
disallow use of chained assignment expressions |
|||
disallow multiple empty lines |
|||
disallow negated conditions |
|||
disallow nested ternary expressions |
|||
disallow |
|||
disallow the unary operators |
|||
disallow specified syntax |
|||
disallow all tabs |
|||
disallow ternary operators |
|||
disallow trailing whitespace at the end of lines |
|||
disallow dangling underscores in identifiers |
|||
disallow ternary operators when simpler alternatives exist |
|||
disallow whitespace before properties |
|||
enforce the location of single-line statements |
|||
enforce consistent line breaks inside braces |
|||
enforce consistent spacing inside braces |
|||
enforce placing object properties on separate lines |
|||
enforce variables to be declared either together or separately in functions |
|||
require or disallow newlines around variable declarations |
|||
require or disallow assignment operator shorthand where possible |
|||
enforce consistent linebreak style for operators |
|||
require or disallow padding within blocks |
|||
require or disallow padding lines between statements |
|||
require quotes around object literal property names |
|||
enforce the consistent use of either backticks, double, or single quotes |
|||
require JSDoc comments |
|||
require or disallow semicolons instead of ASI |
|||
enforce consistent spacing before and after semicolons |
|||
enforce location of semicolons |
|||
require object keys to be sorted |
|||
require variables within the same declaration block to be sorted |
|||
enforce consistent spacing before blocks |
|||
enforce consistent spacing before |
|||
enforce consistent spacing inside parentheses |
|||
require spacing around infix operators |
|||
enforce consistent spacing before or after unary operators |
|||
enforce consistent spacing after the |
|||
enforce spacing around colons of switch statements |
|||
require or disallow spacing between template tags and their literals |
|||
require or disallow Unicode byte order mark (BOM) |
|||
require parenthesis around regex literals |
ECMAScript 6
These rules relate to ES6, also known as ES2015:
require braces around arrow function bodies |
|||
require parentheses around arrow function arguments |
|||
enforce consistent spacing before and after the arrow in arrow functions |
|||
require |
|||
enforce consistent spacing around |
|||
disallow reassigning class members |
|||
disallow arrow functions where they could be confused with comparisons |
|||
disallow reassigning |
|||
disallow duplicate class members |
|||
disallow duplicate module imports |
|||
disallow |
|||
disallow specified modules when loaded by |
|||
disallow |
|||
disallow unnecessary computed property keys in object literals |
|||
disallow unnecessary constructors |
|||
disallow renaming import, export, and destructured assignments to the same name |
|||
require |
|||
require or disallow method and property shorthand syntax for object literals |
|||
require using arrow functions for callbacks |
|||
require |
|||
require destructuring from arrays and/or objects |
|||
disallow |
|||
require rest parameters instead of |
|||
require spread operators instead of |
|||
require template literals instead of string concatenation |
|||
require generator functions to contain |
|||
enforce spacing between rest and spread operators and their expressions |
|||
enforce sorted import declarations within modules |
|||
require symbol descriptions |
|||
require or disallow spacing around embedded expressions of template strings |
|||
require or disallow spacing around the |
Deprecated
These rules have been deprecated in accordance with the deprecation policy, and replaced by newer rules:
Deprecated rule | Replaced by |
---|---|
(no replacement) |
Removed
These rules from older versions of ESLint (before the deprecation policy existed) have been replaced by newer rules:
Removed rule | Replaced by |
---|---|