Eslint
规则 | Rules

indent-legacy

enforce consistent indentation (indent-legacy)

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

ESLint 4.0.0引入了对indent规则的重写,现在报告的错误比以前的版本更多。为了简化迁移到4.0.0的过程,该indent-legacy规则作为indentESLint 3.x规则的快照引入。如果在升级到4.0.0之后构建失败,则可以禁用indent并启用indent-legacy作为快速修复。最终,您应该切换回indent规则以获取未来版本中的错误修正和改进。

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

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( // Any indentation is permitted in variable declarations and assignments. var bip = aardvark.badger .coyote;

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 };

兼容性

  • JSHint: indent

该规则是在ESLint 4.0.0-alpha.0中引入的。

资源