mirror of
https://git.proxmox.com/git/pve-eslint
synced 2025-10-05 20:33:47 +00:00

includes a (minimal) working wrapper Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
172 lines
4.3 KiB
Markdown
172 lines
4.3 KiB
Markdown
# Disallow multiple spaces (no-multi-spaces)
|
|
|
|
Multiple spaces in a row that are not used for indentation are typically mistakes. For example:
|
|
|
|
```js
|
|
|
|
if(foo === "bar") {}
|
|
|
|
```
|
|
|
|
It's hard to tell, but there are two spaces between `foo` and `===`. Multiple spaces such as this are generally frowned upon in favor of single spaces:
|
|
|
|
```js
|
|
|
|
if(foo === "bar") {}
|
|
|
|
```
|
|
|
|
## Rule Details
|
|
|
|
This rule aims to disallow multiple whitespace around logical expressions, conditional expressions, declarations, array elements, object properties, sequences and function parameters.
|
|
|
|
Examples of **incorrect** code for this rule:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: "error"*/
|
|
|
|
var a = 1;
|
|
|
|
if(foo === "bar") {}
|
|
|
|
a << b
|
|
|
|
var arr = [1, 2];
|
|
|
|
a ? b: c
|
|
```
|
|
|
|
Examples of **correct** code for this rule:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: "error"*/
|
|
|
|
var a = 1;
|
|
|
|
if(foo === "bar") {}
|
|
|
|
a << b
|
|
|
|
var arr = [1, 2];
|
|
|
|
a ? b: c
|
|
```
|
|
|
|
## Options
|
|
|
|
This rule's configuration consists of an object with the following properties:
|
|
|
|
* `"ignoreEOLComments": true` (defaults to `false`) ignores multiple spaces before comments that occur at the end of lines
|
|
* `"exceptions": { "Property": true }` (`"Property"` is the only node specified by default) specifies nodes to ignore
|
|
|
|
### ignoreEOLComments
|
|
|
|
Examples of **incorrect** code for this rule with the `{ "ignoreEOLComments": false }` (default) option:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: ["error", { ignoreEOLComments: false }]*/
|
|
|
|
var x = 5; // comment
|
|
var x = 5; /* multiline
|
|
* comment
|
|
*/
|
|
```
|
|
|
|
Examples of **correct** code for this rule with the `{ "ignoreEOLComments": false }` (default) option:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: ["error", { ignoreEOLComments: false }]*/
|
|
|
|
var x = 5; // comment
|
|
var x = 5; /* multiline
|
|
* comment
|
|
*/
|
|
```
|
|
|
|
Examples of **correct** code for this rule with the `{ "ignoreEOLComments": true }` option:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: ["error", { ignoreEOLComments: true }]*/
|
|
|
|
var x = 5; // comment
|
|
var x = 5; // comment
|
|
var x = 5; /* multiline
|
|
* comment
|
|
*/
|
|
var x = 5; /* multiline
|
|
* comment
|
|
*/
|
|
```
|
|
|
|
### exceptions
|
|
|
|
To avoid contradictions with other rules that require multiple spaces, this rule has an `exceptions` option to ignore certain nodes.
|
|
|
|
This option is an object that expects property names to be AST node types as defined by [ESTree](https://github.com/estree/estree). The easiest way to determine the node types for `exceptions` is to use [AST Explorer](https://astexplorer.net/) with the espree parser.
|
|
|
|
Only the `Property` node type is ignored by default, because for the [key-spacing](key-spacing.md) rule some alignment options require multiple spaces in properties of object literals.
|
|
|
|
Examples of **correct** code for the default `"exceptions": { "Property": true }` option:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: "error"*/
|
|
/*eslint key-spacing: ["error", { align: "value" }]*/
|
|
|
|
var obj = {
|
|
first: "first",
|
|
second: "second"
|
|
};
|
|
```
|
|
|
|
Examples of **incorrect** code for the `"exceptions": { "Property": false }` option:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: ["error", { exceptions: { "Property": false } }]*/
|
|
/*eslint key-spacing: ["error", { align: "value" }]*/
|
|
|
|
var obj = {
|
|
first: "first",
|
|
second: "second"
|
|
};
|
|
```
|
|
|
|
Examples of **correct** code for the `"exceptions": { "BinaryExpression": true }` option:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: ["error", { exceptions: { "BinaryExpression": true } }]*/
|
|
|
|
var a = 1 * 2;
|
|
```
|
|
|
|
Examples of **correct** code for the `"exceptions": { "VariableDeclarator": true }` option:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: ["error", { exceptions: { "VariableDeclarator": true } }]*/
|
|
|
|
var someVar = 'foo';
|
|
var someOtherVar = 'barBaz';
|
|
```
|
|
|
|
Examples of **correct** code for the `"exceptions": { "ImportDeclaration": true }` option:
|
|
|
|
```js
|
|
/*eslint no-multi-spaces: ["error", { exceptions: { "ImportDeclaration": true } }]*/
|
|
|
|
import mod from 'mod';
|
|
import someOtherMod from 'some-other-mod';
|
|
```
|
|
|
|
## When Not To Use It
|
|
|
|
If you don't want to check and disallow multiple spaces, then you should turn this rule off.
|
|
|
|
## Related Rules
|
|
|
|
* [key-spacing](key-spacing.md)
|
|
* [space-infix-ops](space-infix-ops.md)
|
|
* [space-in-brackets](space-in-brackets.md) (deprecated)
|
|
* [space-in-parens](space-in-parens.md)
|
|
* [space-after-keywords](space-after-keywords.md)
|
|
* [space-unary-ops](space-unary-ops.md)
|
|
* [space-return-throw-case](space-return-throw-case.md)
|