Eslint
规则 | Rules

indent

强制执行一致的缩进(缩进)

--fix命令行上的选项可以自动修复一些被这条规则反映的问题。

有几个通用的指导方针需要嵌套块和语句的特定缩进,如:

function hello(indentSize, type) { if (indentSize === 4 && type !== 'tab') { console.log('Each next indentation will increase on 4 spaces' } }

这些是不同风格指南中推荐的最常见方案:

  • 两个空格,不再是标签:Google,npm,Node.js,Idiomatic,Felix

规则细节

此规则强制执行一致的缩进样式。默认样式是4 spaces

选项

这条规则有一个混合选项:

例如,对于2格缩进:

{ "indent": ["error", 2] }

或者用于制表符缩进:

{ "indent": ["error", "tab"] }

此规则的默认选项的代码错误示例:

/*eslint indent: "error"*/ if (a) { b=c; function foo(d) { e=f; } }

具有默认选项的此规则的正确代码示例:

/*eslint indent: "error"*/ if (a) { b=c; function foo(d) { e=f; } }

该规则有一个对象选项:

  • "SwitchCase"(默认:0)强制缩进级别case的条款switch声明

缩进级别表示指定缩进的倍数。例:

  • VariableDeclarator设置为4的空格2缩进将使用8个空格缩进多行变量声明。

标签

此规则的错误代码示例包含以下"tab"选项:

/*eslint indent: ["error", "tab"]*/ if (a) { b=c; function foo(d) { e=f; } }

此规则的正确代码示例包含以下"tab"选项:

/*eslint indent: ["error", "tab"]*/ if (a) { /*tab*/b=c; /*tab*/function foo(d) { /*tab*//*tab*/e=f; /*tab*/} }

SwitchCase

此规则的代码错误代码示例2, { "SwitchCase": 1 }如下:

/*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/ switch(a){ case "a": break; case "b": break; }

此规则的正确代码示例包含以下2, { "SwitchCase": 1 }选项:

/*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/ switch(a){ case "a": break; case "b": break; }

VariableDeclarator

此规则的代码错误代码示例2, { "VariableDeclarator": 1 }如下:

/*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*/ /*eslint-env es6*/ var a, b, c; let a, b, c; const a = 1, b = 2, c = 3;

此规则的正确代码示例包含以下2, { "VariableDeclarator": 1 }选项:

/*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*/ /*eslint-env es6*/ var a, b, c; let a, b, c; const a = 1, b = 2, c = 3;

此规则的正确代码示例包含以下2, { "VariableDeclarator": 2 }选项:

/*eslint indent: ["error", 2, { "VariableDeclarator": 2 }]*/ /*eslint-env es6*/ var a, b, c; let a, b, c; const a = 1, b = 2, c = 3;

此规则的正确代码示例包含以下2, { "VariableDeclarator": { "var": 2, "let": 2, "const": 3 } }选项:

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

outerIIFEBody

此规则的代码错误代码示例2, { "outerIIFEBody": 0 }如下:

/*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/ (function() { function foo(x) { return x + 1; } })( if(y) { console.log('foo' }

此规则的正确代码示例包含以下选项2, {"outerIIFEBody": 0}

/*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/ (function() { function foo(x) { return x + 1; } })( if(y) { console.log('foo' }

MemberExpression

此规则的代码错误代码示例2, { "MemberExpression": 1 }如下:

/*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/ foo .bar .baz()

此规则的正确代码示例包含以下2, { "MemberExpression": 1 }选项:

/*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/ foo .bar .baz(

FunctionDeclaration

此规则的错误代码示例包含以下2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }选项:

/*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/ function foo(bar, baz, qux) { qux( }

此规则的正确代码示例包含以下2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }选项:

/*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/ function foo(bar, baz, qux) { qux( }

此规则的错误代码示例包含以下2, { "FunctionDeclaration": {"parameters": "first"} }选项:

/*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/ function foo(bar, baz, qux, boop) { qux( }

此规则的正确代码示例包含以下2, { "FunctionDeclaration": {"parameters": "first"} }选项:

/*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/ function foo(bar, baz, qux, boop) { qux( }

FunctionExpression

此规则的错误代码示例包含以下2, { "FunctionExpression": {"body": 1, "parameters": 2} }选项:

/*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/ var foo = function(bar, baz, qux) { qux( }

此规则的正确代码示例包含以下2, { "FunctionExpression": {"body": 1, "parameters": 2} }选项:

/*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/ var foo = function(bar, baz, qux) { qux( }

此规则的错误代码示例包含以下2, { "FunctionExpression": {"parameters": "first"} }选项:

/*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/ var foo = function(bar, baz, qux, boop) { qux( }

此规则的正确代码示例包含以下2, { "FunctionExpression": {"parameters": "first"} }选项:

/*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/ var foo = function(bar, baz, qux, boop) { qux( }

CallExpression

此规则的错误代码示例包含以下2, { "CallExpression": {"arguments": 1} }选项:

/*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/ foo(bar, baz, qux

此规则的正确代码示例包含以下2, { "CallExpression": {"arguments": 1} }选项:

/*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/ foo(bar, baz, qux

此规则的错误代码示例包含以下2, { "CallExpression": {"arguments": "first"} }选项:

/*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/ foo(bar, baz, baz, boop, beep

此规则的正确代码示例包含以下2, { "CallExpression": {"arguments": "first"} }选项:

/*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/ foo(bar, baz, baz, boop, beep

ArrayExpression

此规则的错误代码示例包含以下2, { "ArrayExpression": 1 }选项:

/*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/ var foo = [ bar, baz, qux ];

此规则的正确代码示例包含以下2, { "ArrayExpression": 1 }选项:

/*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/ var foo = [ bar, baz, qux ];

此规则的错误代码示例包含以下2, { "ArrayExpression": "first" }选项:

/*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/ var foo = [bar, baz, qux ];

此规则的正确代码示例包含以下2, { "ArrayExpression": "first" }选项:

/*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/ var foo = [bar, baz, qux ];

ObjectExpression

此规则的错误代码示例包含以下2, { "ObjectExpression": 1 }选项:

/*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/ var foo = { bar: 1, baz: 2, qux: 3 };

此规则的正确代码示例包含以下2, { "ObjectExpression": 1 }选项:

/*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/ var foo = { bar: 1, baz: 2, qux: 3 };

此规则的错误代码示例包含以下2, { "ObjectExpression": "first" }选项:

/*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/ var foo = { bar: 1, baz: 2 };

此规则的正确代码示例包含以下2, { "ObjectExpression": "first" }选项:

/*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/ var foo = { bar: 1, baz: 2 };

ImportDeclaration

此规则的正确代码示例4, { "ImportDeclaration": 1 }(缺省值):

/*eslint indent: ["error", 4, { ImportDeclaration: 1 }]*/ import { foo, bar, baz, } from 'qux'; import { foo, bar, baz, } from 'qux';

此规则的错误代码示例包含以下4, { ImportDeclaration: "first" }选项:

/*eslint indent: ["error", 4, { ImportDeclaration: "first" }]*/ import { foo, bar, baz, } from 'qux';

此规则的正确代码示例包含以下4, { ImportDeclaration: "first" }选项:

/*eslint indent: ["error", 4, { ImportDeclaration: "first" }]*/ import { foo, bar, baz, } from 'qux';

flatTernaryExpressions

此规则的默认代码错误代码示例4, { "flatTernaryExpressions": false }

/*eslint indent: ["error", 4, { "flatTernaryExpressions": false }]*/ var a = foo ? bar : baz ? qux : boop;

具有默认选项的此规则的正确代码示例4, { "flatTernaryExpressions": false }

/*eslint indent: ["error", 4, { "flatTernaryExpressions": false }]*/ var a = foo ? bar : baz ? qux : boop;

此规则的错误代码示例包含以下4, { "flatTernaryExpressions": true }选项:

/*eslint indent: ["error", 4, { "flatTernaryExpressions": true }]*/ var a = foo ? bar : baz ? qux : boop;

此规则的正确代码示例包含以下4, { "flatTernaryExpressions": true }选项:

/*eslint indent: ["error", 4, { "flatTernaryExpressions": true }]*/ var a = foo ? bar : baz ? qux : boop;

ignoredNodes

以下配置忽略ConditionalExpression(“三元表达式”)节点的缩进:

此规则的正确代码示例包含以下4, { "ignoredNodes": ["ConditionalExpression"] }选项:

/*eslint indent: ["error", 4, { "ignoredNodes": ["ConditionalExpression"] }]*/ var a = foo ? bar : baz; var a = foo ? bar : baz;

以下配置忽略了IIFE主体中的缩进。

此规则的正确代码示例包含以下4, { "ignoredNodes": ["CallExpression > FunctionExpression.callee > BlockStatement.body"] }选项:

/*eslint indent: ["error", 4, { "ignoredNodes": ["CallExpression > FunctionExpression.callee > BlockStatement.body"] }]*/ (function() { foo( bar( })

Compatibility

  • JSHint: indent

该规则在ESLint 0.14.0中引入。

资源