There are several common guidelines which require specific indentation of nested blocks and statements, like:
function hello(indentSize, type) { if (indentSize === 4 && type !== 'tab') { console.log('Each next indentation will increase on 4 spaces'); }}
These are the most common scenarios recommended in different style guides:
This rule enforces a consistent indentation style. The default style is 4 spaces
.
This rule has a mixed option:
For example, for 2-space indentation:
{ "indent": ["error", 2]}
Or for tabbed indentation:
{ "indent": ["error", "tab"]}
Examples of incorrect code for this rule with the default options:
/*eslint indent: "error"*/ if (a) { b=c; function foo(d) { e=f; }}
Examples of correct code for this rule with the default options:
/*eslint indent: "error"*/ if (a) { b=c; function foo(d) { e=f; }}
This rule has an object option:
"SwitchCase"
(default: 0) enforces indentation level for case
clauses in switch
statements"VariableDeclarator"
(default: 1) enforces indentation level for var
declarators; can also take an object to define separate rules for var
, let
and const
declarations."outerIIFEBody"
(default: 1) enforces indentation level for file-level IIFEs."MemberExpression"
(off by default) enforces indentation level for multi-line property chains (except in variable declarations and assignments)"FunctionDeclaration"
takes an object to define rules for function declarations.
parameters
(off by default) enforces indentation level for parameters in a function declaration. This can either be a number indicating indentation level, or the string "first"
indicating that all parameters of the declaration must be aligned with the first parameter.body
(default: 1) enforces indentation level for the body of a function declaration."FunctionExpression"
takes an object to define rules for function expressions.
parameters
(off by default) enforces indentation level for parameters in a function expression. This can either be a number indicating indentation level, or the string "first"
indicating that all parameters of the expression must be aligned with the first parameter.body
(default: 1) enforces indentation level for the body of a function expression."CallExpression"
takes an object to define rules for function call expressions.
arguments
(off by default) enforces indentation level for arguments in a call expression. This can either be a number indicating indentation level, or the string "first"
indicating that all arguments of the expression must be aligned with the first argument."ArrayExpression"
(default: 1) enforces indentation level for elements in arrays. It can also be set to the string "first"
, indicating that all the elements in the array should be aligned with the first element."ObjectExpression"
(default: 1) enforces indentation level for properties in objects. It can be set to the string "first"
, indicating that all properties in the object should be aligned with the first property.Level of indentation denotes the multiple of the indent specified. Example:
VariableDeclarator
set to 2
will indent the multi-line variable declarations with 8 spaces.VariableDeclarator
set to 2
will indent the multi-line variable declarations with 4 spaces.VariableDeclarator
set to {"var": 2, "let": 2, "const": 3}
will indent the multi-line variable declarations with 4 spaces for var
and let
, 6 spaces for const
statements.VariableDeclarator
set to 2
will indent the multi-line variable declarations with 2 tabs.SwitchCase
set to 0
will not indent case
clauses with respect to switch
statements.SwitchCase
set to 1
will indent case
clauses with 2 spaces with respect to switch
statements.SwitchCase
set to 2
will indent case
clauses with 4 spaces with respect to switch
statements.SwitchCase
set to 2
will indent case
clauses with 2 tabs with respect to switch
statements.MemberExpression
set to 0
will indent the multi-line property chains with 0 spaces.MemberExpression
set to 1
will indent the multi-line property chains with 2 spaces.MemberExpression
set to 2
will indent the multi-line property chains with 4 spaces.MemberExpression
set to 0
will indent the multi-line property chains with 0 spaces.MemberExpression
set to 1
will indent the multi-line property chains with 4 spaces.MemberExpression
set to 2
will indent the multi-line property chains with 8 spaces.Examples of incorrect code for this rule with the "tab"
option:
/*eslint indent: ["error", "tab"]*/ if (a) { b=c;function foo(d) { e=f; }}
Examples of correct code for this rule with the "tab"
option:
/*eslint indent: ["error", "tab"]*/ if (a) {/*tab*/b=c;/*tab*/function foo(d) {/*tab*//*tab*/e=f;/*tab*/}}
Examples of incorrect code for this rule with the 2, { "SwitchCase": 1 }
options:
/*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/ switch(a){case "a": break;case "b": break;}
Examples of correct code for this rule with the 2, { "SwitchCase": 1 }
option:
/*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/ switch(a){ case "a": break; case "b": break;}
Examples of incorrect code for this rule with the 2, { "VariableDeclarator": 1 }
options:
/*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*//*eslint-env es6*/ var a, b, c;let a, b, c;const a = 1, b = 2, c = 3;
Examples of correct code for this rule with the 2, { "VariableDeclarator": 1 }
options:
/*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*//*eslint-env es6*/ var a, b, c;let a, b, c;const a = 1, b = 2, c = 3;
Examples of correct code for this rule with the 2, { "VariableDeclarator": 2 }
options:
/*eslint indent: ["error", 2, { "VariableDeclarator": 2 }]*//*eslint-env es6*/ var a, b, c;let a, b, c;const a = 1, b = 2, c = 3;
Examples of correct code for this rule with the 2, { "VariableDeclarator": { "var": 2, "let": 2, "const": 3 } }
options:
/*eslint indent: ["error", 2, { "VariableDeclarator": { "var": 2, "let": 2, "const": 3 } }]*//*eslint-env es6*/ var a, b, c;let a, b, c;const a = 1, b = 2, c = 3;
Examples of incorrect code for this rule with the options 2, { "outerIIFEBody": 0 }
:
/*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/ (function() { function foo(x) { return x + 1; } })(); if(y) {console.log('foo');}
Examples of correct code for this rule with the options 2, {"outerIIFEBody": 0}
:
/*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/ (function() { function foo(x) { return x + 1;} })(); if(y) { console.log('foo');}
Examples of incorrect code for this rule with the 2, { "MemberExpression": 1 }
options:
/*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/ foo.bar.baz()
Examples of correct code for this rule with the 2, { "MemberExpression": 1 }
option:
/*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/ foo .bar .baz(); // Any indentation is permitted in variable declarations and assignments.var bip = aardvark.badger .coyote;
Examples of incorrect code for this rule with the 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }
option:
/*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/ function foo(bar, baz, qux) { qux();}
Examples of correct code for this rule with the 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }
option:
/*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/ function foo(bar, baz, qux) { qux();}
Examples of incorrect code for this rule with the 2, { "FunctionDeclaration": {"parameters": "first"} }
option:
/*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/ function foo(bar, baz, qux, boop) { qux();}
Examples of correct code for this rule with the 2, { "FunctionDeclaration": {"parameters": "first"} }
option:
/*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/ function foo(bar, baz, qux, boop) { qux();}
Examples of incorrect code for this rule with the 2, { "FunctionExpression": {"body": 1, "parameters": 2} }
option:
/*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/ var foo = function(bar, baz, qux) { qux();}
Examples of correct code for this rule with the 2, { "FunctionExpression": {"body": 1, "parameters": 2} }
option:
/*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/ var foo = function(bar, baz, qux) { qux();}
Examples of incorrect code for this rule with the 2, { "FunctionExpression": {"parameters": "first"} }
option:
/*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/ var foo = function(bar, baz, qux, boop) { qux();}
Examples of correct code for this rule with the 2, { "FunctionExpression": {"parameters": "first"} }
option:
/*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/ var foo = function(bar, baz, qux, boop) { qux();}
Examples of incorrect code for this rule with the 2, { "CallExpression": {"arguments": 1} }
option:
/*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/ foo(bar, baz, qux);
Examples of correct code for this rule with the 2, { "CallExpression": {"arguments": 1} }
option:
/*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/ foo(bar, baz, qux);
Examples of incorrect code for this rule with the 2, { "CallExpression": {"arguments": "first"} }
option:
/*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/ foo(bar, baz, baz, boop, beep);
Examples of correct code for this rule with the 2, { "CallExpression": {"arguments": "first"} }
option:
/*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/ foo(bar, baz, baz, boop, beep);
Examples of incorrect code for this rule with the 2, { "ArrayExpression": 1 }
option:
/*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/ var foo = [ bar,baz, qux];
Examples of correct code for this rule with the 2, { "ArrayExpression": 1 }
option:
/*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/ var foo = [ bar, baz, qux];
Examples of incorrect code for this rule with the 2, { "ArrayExpression": "first" }
option:
/*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/ var foo = [bar, baz, qux];
Examples of correct code for this rule with the 2, { "ArrayExpression": "first" }
option:
/*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/ var foo = [bar, baz, qux];
Examples of incorrect code for this rule with the 2, { "ObjectExpression": 1 }
option:
/*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/ var foo = { bar: 1,baz: 2, qux: 3};
Examples of correct code for this rule with the 2, { "ObjectExpression": 1 }
option:
/*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/ var foo = { bar: 1, baz: 2, qux: 3};
Examples of incorrect code for this rule with the 2, { "ObjectExpression": "first" }
option:
/*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/ var foo = { bar: 1, baz: 2 };
Examples of correct code for this rule with the 2, { "ObjectExpression": "first" }
option:
/*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/ var foo = { bar: 1, baz: 2 };
indent
Tags: headers, blank_lines
Aliases: blanks-around-headers
This rule is triggered when headers (any style) are either not preceded or not followed by a blank line:
# Header 1Some text Some more text## Header 2
To fix this, ensure that all headers have a blank line both before and after (except where the header is at the beginning or end of the document):
# Header 1 Some text Some more text ## Header 2
Rationale: Aside from aesthetic reasons, some parsers, including kramdown, will not parse headers that don't have a blank line before, and will parse them as regular text.
There are several common guidelines which require specific indentation of nested blocks and statements, like:
function hello(indentSize, type) { if (indentSize === 4 && type !== 'tab') { console.log('Each next indentation will increase on 4 spaces'); }}
These are the most common scenarios recommended in different style guides:
This rule enforces a consistent indentation style. The default style is 4 spaces
.
This rule has a mixed option:
For example, for 2-space indentation:
{ "indent": ["error", 2]}
Or for tabbed indentation:
{ "indent": ["error", "tab"]}
Examples of incorrect code for this rule with the default options:
/*eslint indent: "error"*/ if (a) { b=c; function foo(d) { e=f; }}
Examples of correct code for this rule with the default options:
/*eslint indent: "error"*/ if (a) { b=c; function foo(d) { e=f; }}
This rule has an object option:
"SwitchCase"
(default: 0) enforces indentation level for case
clauses in switch
statements"VariableDeclarator"
(default: 1) enforces indentation level for var
declarators; can also take an object to define separate rules for var
, let
and const
declarations."outerIIFEBody"
(default: 1) enforces indentation level for file-level IIFEs."MemberExpression"
(off by default) enforces indentation level for multi-line property chains (except in variable declarations and assignments)"FunctionDeclaration"
takes an object to define rules for function declarations.
parameters
(off by default) enforces indentation level for parameters in a function declaration. This can either be a number indicating indentation level, or the string "first"
indicating that all parameters of the declaration must be aligned with the first parameter.body
(default: 1) enforces indentation level for the body of a function declaration."FunctionExpression"
takes an object to define rules for function expressions.
parameters
(off by default) enforces indentation level for parameters in a function expression. This can either be a number indicating indentation level, or the string "first"
indicating that all parameters of the expression must be aligned with the first parameter.body
(default: 1) enforces indentation level for the body of a function expression."CallExpression"
takes an object to define rules for function call expressions.
arguments
(off by default) enforces indentation level for arguments in a call expression. This can either be a number indicating indentation level, or the string "first"
indicating that all arguments of the expression must be aligned with the first argument."ArrayExpression"
(default: 1) enforces indentation level for elements in arrays. It can also be set to the string "first"
, indicating that all the elements in the array should be aligned with the first element."ObjectExpression"
(default: 1) enforces indentation level for properties in objects. It can be set to the string "first"
, indicating that all properties in the object should be aligned with the first property.Level of indentation denotes the multiple of the indent specified. Example:
VariableDeclarator
set to 2
will indent the multi-line variable declarations with 8 spaces.VariableDeclarator
set to 2
will indent the multi-line variable declarations with 4 spaces.VariableDeclarator
set to {"var": 2, "let": 2, "const": 3}
will indent the multi-line variable declarations with 4 spaces for var
and let
, 6 spaces for const
statements.VariableDeclarator
set to 2
will indent the multi-line variable declarations with 2 tabs.SwitchCase
set to 0
will not indent case
clauses with respect to switch
statements.SwitchCase
set to 1
will indent case
clauses with 2 spaces with respect to switch
statements.SwitchCase
set to 2
will indent case
clauses with 4 spaces with respect to switch
statements.SwitchCase
set to 2
will indent case
clauses with 2 tabs with respect to switch
statements.MemberExpression
set to 0
will indent the multi-line property chains with 0 spaces.MemberExpression
set to 1
will indent the multi-line property chains with 2 spaces.MemberExpression
set to 2
will indent the multi-line property chains with 4 spaces.MemberExpression
set to 0
will indent the multi-line property chains with 0 spaces.MemberExpression
set to 1
will indent the multi-line property chains with 4 spaces.MemberExpression
set to 2
will indent the multi-line property chains with 8 spaces.Examples of incorrect code for this rule with the "tab"
option:
/*eslint indent: ["error", "tab"]*/ if (a) { b=c;function foo(d) { e=f; }}
Examples of correct code for this rule with the "tab"
option:
/*eslint indent: ["error", "tab"]*/ if (a) {/*tab*/b=c;/*tab*/function foo(d) {/*tab*//*tab*/e=f;/*tab*/}}
Examples of incorrect code for this rule with the 2, { "SwitchCase": 1 }
options:
/*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/ switch(a){case "a": break;case "b": break;}
Examples of correct code for this rule with the 2, { "SwitchCase": 1 }
option:
/*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/ switch(a){ case "a": break; case "b": break;}
Examples of incorrect code for this rule with the 2, { "VariableDeclarator": 1 }
options:
/*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*//*eslint-env es6*/ var a, b, c;let a, b, c;const a = 1, b = 2, c = 3;
Examples of correct code for this rule with the 2, { "VariableDeclarator": 1 }
options:
/*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*//*eslint-env es6*/ var a, b, c;let a, b, c;const a = 1, b = 2, c = 3;
Examples of correct code for this rule with the 2, { "VariableDeclarator": 2 }
options:
/*eslint indent: ["error", 2, { "VariableDeclarator": 2 }]*//*eslint-env es6*/ var a, b, c;let a, b, c;const a = 1, b = 2, c = 3;
Examples of correct code for this rule with the 2, { "VariableDeclarator": { "var": 2, "let": 2, "const": 3 } }
options:
/*eslint indent: ["error", 2, { "VariableDeclarator": { "var": 2, "let": 2, "const": 3 } }]*//*eslint-env es6*/ var a, b, c;let a, b, c;const a = 1, b = 2, c = 3;
Examples of incorrect code for this rule with the options 2, { "outerIIFEBody": 0 }
:
/*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/ (function() { function foo(x) { return x + 1; } })(); if(y) {console.log('foo');}
Examples of correct code for this rule with the options 2, {"outerIIFEBody": 0}
:
/*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/ (function() { function foo(x) { return x + 1;} })(); if(y) { console.log('foo');}
Examples of incorrect code for this rule with the 2, { "MemberExpression": 1 }
options:
/*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/ foo.bar.baz()
Examples of correct code for this rule with the 2, { "MemberExpression": 1 }
option:
/*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/ foo .bar .baz(); // Any indentation is permitted in variable declarations and assignments.var bip = aardvark.badger .coyote;
Examples of incorrect code for this rule with the 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }
option:
/*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/ function foo(bar, baz, qux) { qux();}
Examples of correct code for this rule with the 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }
option:
/*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/ function foo(bar, baz, qux) { qux();}
Examples of incorrect code for this rule with the 2, { "FunctionDeclaration": {"parameters": "first"} }
option:
/*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/ function foo(bar, baz, qux, boop) { qux();}
Examples of correct code for this rule with the 2, { "FunctionDeclaration": {"parameters": "first"} }
option:
/*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/ function foo(bar, baz, qux, boop) { qux();}
Examples of incorrect code for this rule with the 2, { "FunctionExpression": {"body": 1, "parameters": 2} }
option:
/*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/ var foo = function(bar, baz, qux) { qux();}
Examples of correct code for this rule with the 2, { "FunctionExpression": {"body": 1, "parameters": 2} }
option:
/*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/ var foo = function(bar, baz, qux) { qux();}
Examples of incorrect code for this rule with the 2, { "FunctionExpression": {"parameters": "first"} }
option:
/*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/ var foo = function(bar, baz, qux, boop) { qux();}
Examples of correct code for this rule with the 2, { "FunctionExpression": {"parameters": "first"} }
option:
/*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/ var foo = function(bar, baz, qux, boop) { qux();}
Examples of incorrect code for this rule with the 2, { "CallExpression": {"arguments": 1} }
option:
/*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/ foo(bar, baz, qux);
Examples of correct code for this rule with the 2, { "CallExpression": {"arguments": 1} }
option:
/*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/ foo(bar, baz, qux);
Examples of incorrect code for this rule with the 2, { "CallExpression": {"arguments": "first"} }
option:
/*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/ foo(bar, baz, baz, boop, beep);
Examples of correct code for this rule with the 2, { "CallExpression": {"arguments": "first"} }
option:
/*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/ foo(bar, baz, baz, boop, beep);
Examples of incorrect code for this rule with the 2, { "ArrayExpression": 1 }
option:
/*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/ var foo = [ bar,baz, qux];
Examples of correct code for this rule with the 2, { "ArrayExpression": 1 }
option:
/*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/ var foo = [ bar, baz, qux];
Examples of incorrect code for this rule with the 2, { "ArrayExpression": "first" }
option:
/*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/ var foo = [bar, baz, qux];
Examples of correct code for this rule with the 2, { "ArrayExpression": "first" }
option:
/*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/ var foo = [bar, baz, qux];
Examples of incorrect code for this rule with the 2, { "ObjectExpression": 1 }
option:
/*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/ var foo = { bar: 1,baz: 2, qux: 3};
Examples of correct code for this rule with the 2, { "ObjectExpression": 1 }
option:
/*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/ var foo = { bar: 1, baz: 2, qux: 3};
Examples of incorrect code for this rule with the 2, { "ObjectExpression": "first" }
option:
/*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/ var foo = { bar: 1, baz: 2 };
Examples of correct code for this rule with the 2, { "ObjectExpression": "first" }
option:
/*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/ var foo = { bar: 1, baz: 2 };
indent