ESLINT Rules

ESLintESLint User guide Developer guide Blog Demo About Search Search the docs... 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:

for-direction

enforce “for” loop update clause moving the counter in the right direction.

getter-return

enforce return statements in getters

no-async-promise-executor

disallow using an async function as a Promise executor

no-await-in-loop

disallow await inside of loops

no-compare-neg-zero

disallow comparing against -0

no-cond-assign

disallow assignment operators in conditional expressions

no-console

disallow the use of console

no-constant-condition

disallow constant expressions in conditions

no-control-regex

disallow control characters in regular expressions

no-debugger

disallow the use of debugger

no-dupe-args

disallow duplicate arguments in function definitions

no-dupe-keys

disallow duplicate keys in object literals

no-duplicate-case

disallow duplicate case labels

no-empty

disallow empty block statements

no-empty-character-class

disallow empty character classes in regular expressions

no-ex-assign

disallow reassigning exceptions in catch clauses

no-extra-boolean-cast

disallow unnecessary boolean casts

no-extra-parens

disallow unnecessary parentheses

no-extra-semi

disallow unnecessary semicolons

no-func-assign

disallow reassigning function declarations

no-import-assign

disallow assigning to imported bindings

no-inner-declarations

disallow variable or function declarations in nested blocks

no-invalid-regexp

disallow invalid regular expression strings in RegExp constructors

no-irregular-whitespace

disallow irregular whitespace

no-misleading-character-class

disallow characters which are made with multiple code points in character class syntax

no-obj-calls

disallow calling global object properties as functions

no-prototype-builtins

disallow calling some Object.prototype methods directly on objects

no-regex-spaces

disallow multiple spaces in regular expressions

no-sparse-arrays

disallow sparse arrays

no-template-curly-in-string

disallow template literal placeholder syntax in regular strings

no-unexpected-multiline

disallow confusing multiline expressions

no-unreachable

disallow unreachable code after return, throw, continue, and break statements

no-unsafe-finally

disallow control flow statements in finally blocks

no-unsafe-negation

disallow negating the left operand of relational operators

require-atomic-updates

disallow assignments that can lead to race conditions due to usage of await or yield

use-isnan

require calls to isNaN() when checking for NaN

valid-typeof

enforce comparing typeof expressions against valid strings

Best Practices These rules relate to better ways of doing things to help you avoid problems:

accessor-pairs

enforce getter and setter pairs in objects and classes

array-callback-return

enforce return statements in callbacks of array methods

block-scoped-var

enforce the use of variables within the scope they are defined

class-methods-use-this

enforce that class methods utilize this

complexity

enforce a maximum cyclomatic complexity allowed in a program

consistent-return

require return statements to either always or never specify values

curly

enforce consistent brace style for all control statements

default-case

require default cases in switch statements

default-param-last

enforce default parameters to be last

dot-location

enforce consistent newlines before and after dots

dot-notation

enforce dot notation whenever possible

eqeqeq

require the use of === and !==

guard-for-in

require for-in loops to include an if statement

max-classes-per-file

enforce a maximum number of classes per file

no-alert

disallow the use of alert, confirm, and prompt

no-caller

disallow the use of arguments.caller or arguments.callee

no-case-declarations

disallow lexical declarations in case clauses

no-div-regex

disallow division operators explicitly at the beginning of regular expressions

no-else-return

disallow else blocks after return statements in if statements

no-empty-function

disallow empty functions

no-empty-pattern

disallow empty destructuring patterns

no-eq-null

disallow null comparisons without type-checking operators

no-eval

disallow the use of eval()

no-extend-native

disallow extending native types

no-extra-bind

disallow unnecessary calls to .bind()

no-extra-label

disallow unnecessary labels

no-fallthrough

disallow fallthrough of case statements

no-floating-decimal

disallow leading or trailing decimal points in numeric literals

no-global-assign

disallow assignments to native objects or read-only global variables

no-implicit-coercion

disallow shorthand type conversions

no-implicit-globals

disallow variable and function declarations in the global scope

no-implied-eval

disallow the use of eval()-like methods

no-invalid-this

disallow this keywords outside of classes or class-like objects

no-iterator

disallow the use of the iterator property

no-labels

disallow labeled statements

no-lone-blocks

disallow unnecessary nested blocks

no-loop-func

disallow function declarations that contain unsafe references inside loop statements

no-magic-numbers

disallow magic numbers

no-multi-spaces

disallow multiple spaces

no-multi-str

disallow multiline strings

no-new

disallow new operators outside of assignments or comparisons

no-new-func

disallow new operators with the Function object

no-new-wrappers

disallow new operators with the String, Number, and Boolean objects

no-octal

disallow octal literals

no-octal-escape

disallow octal escape sequences in string literals

no-param-reassign

disallow reassigning function parameters

no-proto

disallow the use of the proto property

no-redeclare

disallow variable redeclaration

no-restricted-properties

disallow certain properties on certain objects

no-return-assign

disallow assignment operators in return statements

no-return-await

disallow unnecessary return await

no-script-url

disallow javascript: urls

no-self-assign

disallow assignments where both sides are exactly the same

no-self-compare

disallow comparisons where both sides are exactly the same

no-sequences

disallow comma operators

no-throw-literal

disallow throwing literals as exceptions

no-unmodified-loop-condition

disallow unmodified loop conditions

no-unused-expressions

disallow unused expressions

no-unused-labels

disallow unused labels

no-useless-call

disallow unnecessary calls to .call() and .apply()

no-useless-catch

disallow unnecessary catch clauses

no-useless-concat

disallow unnecessary concatenation of literals or template literals

no-useless-escape

disallow unnecessary escape characters

no-useless-return

disallow redundant return statements

no-void

disallow void operators

no-warning-comments

disallow specified warning terms in comments

no-with

disallow with statements

prefer-named-capture-group

enforce using named capture group in regular expression

prefer-promise-reject-errors

require using Error objects as Promise rejection reasons

prefer-regex-literals

disallow use of the RegExp constructor in favor of regular expression literals

radix

enforce the consistent use of the radix argument when using parseInt()

require-await

disallow async functions which have no await expression

require-unicode-regexp

enforce the use of u flag on RegExp

vars-on-top

require var declarations be placed at the top of their containing scope

wrap-iife

require parentheses around immediate function invocations

yoda

require or disallow “Yoda” conditions

Strict Mode These rules relate to strict mode directives:

strict

require or disallow strict mode directives

Variables These rules relate to variable declarations:

init-declarations

require or disallow initialization in variable declarations

no-delete-var

disallow deleting variables

no-label-var

disallow labels that share a name with a variable

no-restricted-globals

disallow specified global variables

no-shadow

disallow variable declarations from shadowing variables declared in the outer scope

no-shadow-restricted-names

disallow identifiers from shadowing restricted names

no-undef

disallow the use of undeclared variables unless mentioned in /*global */ comments

no-undef-init

disallow initializing variables to undefined

no-undefined

disallow the use of undefined as an identifier

no-unused-vars

disallow unused variables

no-use-before-define

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:

callback-return

require return statements after callbacks

global-require

require require() calls to be placed at top-level module scope

handle-callback-err

require error handling in callbacks

no-buffer-constructor

disallow use of the Buffer() constructor

no-mixed-requires

disallow require calls to be mixed with regular variable declarations

no-new-require

disallow new operators with calls to require

no-path-concat

disallow string concatenation with __dirname and __filename

no-process-env

disallow the use of process.env

no-process-exit

disallow the use of process.exit()

no-restricted-modules

disallow specified modules when loaded by require

no-sync

disallow synchronous methods

Stylistic Issues These rules relate to style guidelines, and are therefore quite subjective:

array-bracket-newline

enforce linebreaks after opening and before closing array brackets

array-bracket-spacing

enforce consistent spacing inside array brackets

array-element-newline

enforce line breaks after each array element

block-spacing

disallow or enforce spaces inside of blocks after opening block and before closing block

brace-style

enforce consistent brace style for blocks

camelcase

enforce camelcase naming convention

capitalized-comments

enforce or disallow capitalization of the first letter of a comment

comma-dangle

require or disallow trailing commas

comma-spacing

enforce consistent spacing before and after commas

comma-style

enforce consistent comma style

computed-property-spacing

enforce consistent spacing inside computed property brackets

consistent-this

enforce consistent naming when capturing the current execution context

eol-last

require or disallow newline at the end of files

func-call-spacing

require or disallow spacing between function identifiers and their invocations

func-name-matching

require function names to match the name of the variable or property to which they are assigned

func-names

require or disallow named function expressions

func-style

enforce the consistent use of either function declarations or expressions

function-call-argument-newline

enforce line breaks between arguments of a function call

function-paren-newline

enforce consistent line breaks inside function parentheses

id-blacklist

disallow specified identifiers

id-length

enforce minimum and maximum identifier lengths

id-match

require identifiers to match a specified regular expression

implicit-arrow-linebreak

enforce the location of arrow function bodies

indent

enforce consistent indentation

jsx-quotes

enforce the consistent use of either double or single quotes in JSX attributes

key-spacing

enforce consistent spacing between keys and values in object literal properties

keyword-spacing

enforce consistent spacing before and after keywords

line-comment-position

enforce position of line comments

linebreak-style

enforce consistent linebreak style

lines-around-comment

require empty lines around comments

lines-between-class-members

require or disallow an empty line between class members

max-depth

enforce a maximum depth that blocks can be nested

max-len

enforce a maximum line length

max-lines

enforce a maximum number of lines per file

max-lines-per-function

enforce a maximum number of line of code in a function

max-nested-callbacks

enforce a maximum depth that callbacks can be nested

max-params

enforce a maximum number of parameters in function definitions

max-statements

enforce a maximum number of statements allowed in function blocks

max-statements-per-line

enforce a maximum number of statements allowed per line

multiline-comment-style

enforce a particular style for multiline comments

multiline-ternary

enforce newlines between operands of ternary expressions

new-cap

require constructor names to begin with a capital letter

new-parens

enforce or disallow parentheses when invoking a constructor with no arguments

newline-per-chained-call

require a newline after each call in a method chain

no-array-constructor

disallow Array constructors

no-bitwise

disallow bitwise operators

no-continue

disallow continue statements

no-inline-comments

disallow inline comments after code

no-lonely-if

disallow if statements as the only statement in else blocks

no-mixed-operators

disallow mixed binary operators

no-mixed-spaces-and-tabs

disallow mixed spaces and tabs for indentation

no-multi-assign

disallow use of chained assignment expressions

no-multiple-empty-lines

disallow multiple empty lines

no-negated-condition

disallow negated conditions

no-nested-ternary

disallow nested ternary expressions

no-new-object

disallow Object constructors

no-plusplus

disallow the unary operators ++ and --

no-restricted-syntax

disallow specified syntax

no-tabs

disallow all tabs

no-ternary

disallow ternary operators

no-trailing-spaces

disallow trailing whitespace at the end of lines

no-underscore-dangle

disallow dangling underscores in identifiers

no-unneeded-ternary

disallow ternary operators when simpler alternatives exist

no-whitespace-before-property

disallow whitespace before properties

nonblock-statement-body-position

enforce the location of single-line statements

object-curly-newline

enforce consistent line breaks inside braces

object-curly-spacing

enforce consistent spacing inside braces

object-property-newline

enforce placing object properties on separate lines

one-var

enforce variables to be declared either together or separately in functions

one-var-declaration-per-line

require or disallow newlines around variable declarations

operator-assignment

require or disallow assignment operator shorthand where possible

operator-linebreak

enforce consistent linebreak style for operators

padded-blocks

require or disallow padding within blocks

padding-line-between-statements

require or disallow padding lines between statements

prefer-object-spread

disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.

quote-props

require quotes around object literal property names

quotes

enforce the consistent use of either backticks, double, or single quotes

semi

require or disallow semicolons instead of ASI

semi-spacing

enforce consistent spacing before and after semicolons

semi-style

enforce location of semicolons

sort-keys

require object keys to be sorted

sort-vars

require variables within the same declaration block to be sorted

space-before-blocks

enforce consistent spacing before blocks

space-before-function-paren

enforce consistent spacing before function definition opening parenthesis

space-in-parens

enforce consistent spacing inside parentheses

space-infix-ops

require spacing around infix operators

space-unary-ops

enforce consistent spacing before or after unary operators

spaced-comment

enforce consistent spacing after the // or /* in a comment

switch-colon-spacing

enforce spacing around colons of switch statements

template-tag-spacing

require or disallow spacing between template tags and their literals

unicode-bom

require or disallow Unicode byte order mark (BOM)

wrap-regex

require parenthesis around regex literals

ECMAScript 6 These rules relate to ES6, also known as ES2015:

arrow-body-style

require braces around arrow function bodies

arrow-parens

require parentheses around arrow function arguments

arrow-spacing

enforce consistent spacing before and after the arrow in arrow functions

constructor-super

require super() calls in constructors

generator-star-spacing

enforce consistent spacing around * operators in generator functions

no-class-assign

disallow reassigning class members

no-confusing-arrow

disallow arrow functions where they could be confused with comparisons

no-const-assign

disallow reassigning const variables

no-dupe-class-members

disallow duplicate class members

no-duplicate-imports

disallow duplicate module imports

no-new-symbol

disallow new operators with the Symbol object

no-restricted-imports

disallow specified modules when loaded by import

no-this-before-super

disallow this/super before calling super() in constructors

no-useless-computed-key

disallow unnecessary computed property keys in object literals

no-useless-constructor

disallow unnecessary constructors

no-useless-rename

disallow renaming import, export, and destructured assignments to the same name

no-var

require let or const instead of var

object-shorthand

require or disallow method and property shorthand syntax for object literals

prefer-arrow-callback

require using arrow functions for callbacks

prefer-const

require const declarations for variables that are never reassigned after declared

prefer-destructuring

require destructuring from arrays and/or objects

prefer-numeric-literals

disallow parseInt() and Number.parseInt() in favor of binary, octal, and hexadecimal literals

prefer-rest-params

require rest parameters instead of arguments

prefer-spread

require spread operators instead of .apply()

prefer-template

require template literals instead of string concatenation

require-yield

require generator functions to contain yield

rest-spread-spacing

enforce spacing between rest and spread operators and their expressions

sort-imports

enforce sorted import declarations within modules

symbol-description

require symbol descriptions

template-curly-spacing

require or disallow spacing around embedded expressions of template strings

yield-star-spacing

require or disallow spacing around the * in yield* expressions

Deprecated These rules have been deprecated in accordance with the deprecation policy, and replaced by newer rules:

Deprecated rule Replaced by indent-legacy

indent

lines-around-directive

padding-line-between-statements

newline-after-var

padding-line-between-statements

newline-before-return

padding-line-between-statements

no-catch-shadow

no-shadow

no-native-reassign

no-global-assign

no-negated-in-lhs

no-unsafe-negation

no-spaced-func

func-call-spacing

prefer-reflect

(no replacement)

require-jsdoc

(no replacement)

valid-jsdoc

(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 generator-star

generator-star-spacing

global-strict

strict

no-arrow-condition

no-confusing-arrowno-constant-condition

no-comma-dangle

comma-dangle

no-empty-class

no-empty-character-class

no-empty-label

no-labels

no-extra-strict

strict

no-reserved-keys

quote-props

no-space-before-semi

semi-spacing

no-wrap-func

no-extra-parens

space-after-function-name

space-before-function-paren

space-after-keywords

keyword-spacing

space-before-function-parentheses

space-before-function-paren

space-before-keywords

keyword-spacing

space-in-brackets

object-curly-spacingarray-bracket-spacing

space-return-throw-case

keyword-spacing

space-unary-word-ops

space-unary-ops

spaced-line-comment

spaced-comment

Edit this page Mailing List GitHub Twitter Chat Room Copyright JS Foundation and other contributors, https://js.foundation/