no-multi-spaces
インデントに使用されていない連続した複数のスペースは、通常は間違いです。例えば
if(foo === "bar") {}
分かりにくいですが、`foo`と`===`の間に2つのスペースがあります。このような複数のスペースは、一般的に1つのスペースの方が好まれます。
if(foo === "bar") {}
ルール詳細
このルールは、論理式、条件式、宣言、配列要素、オブジェクトのプロパティ、シーケンス、関数パラメータ周りの複数の空白を禁止することを目的としています。
このルールの不正なコードの例
/*eslint @stylistic/js/no-multi-spaces: "error"*/
var a = 1;
if(foo === "bar") {}
a << b
var arr = [1, 2];
a ? b: c
このルールの正しいコードの例
/*eslint @stylistic/js/no-multi-spaces: "error"*/
var a = 1;
if(foo === "bar") {}
a << b
var arr = [1, 2];
a ? b: c
オプション
このルールの設定は、以下のプロパティを持つオブジェクトで構成されています。
- `"ignoreEOLComments": true` (デフォルトは`false`) 行末にあるコメントの前にある複数のスペースを無視します。
- `"exceptions": { "Property": true }` (`"Property"`はデフォルトで指定されている唯一のノードです) 無視するノードを指定します。
- `"includeTabs": false` (デフォルトは`true`) 複数のタブまたはタブとスペースが混在しているものを複数のスペースとみなします。
ignoreEOLComments
`{ "ignoreEOLComments": false }` (デフォルト) オプションを適用した場合のこのルールの不正なコードの例
/*eslint @stylistic/js/no-multi-spaces: ["error", { ignoreEOLComments: false }]*/
var x = 5; // comment
var x = 5; /* multiline
* comment
*/
`{ "ignoreEOLComments": false }` (デフォルト) オプションを適用した場合のこのルールの正しいコードの例
/*eslint @stylistic/js/no-multi-spaces: ["error", { ignoreEOLComments: false }]*/
var x = 5; // comment
var x = 5; /* multiline
* comment
*/
`{ "ignoreEOLComments": true }` オプションを適用した場合のこのルールの正しいコードの例
/*eslint @stylistic/js/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
他のルールとの矛盾を避けるために、このルールには特定のノードを無視する`exceptions`オプションがあります。
このオプションは、ESTreeで定義されているように、プロパティ名がASTノードタイプであることを期待するオブジェクトです。`exceptions`のノードタイプを決定する最も簡単な方法は、espreeパーサーを使用してAST Explorerを使用することです。
デフォルトでは`Property`ノードタイプのみが無視されます。これは、key-spacingルールでは、いくつかの配置オプションでオブジェクトリテラルのプロパティに複数のスペースが必要となるためです。
デフォルトの`"exceptions": { "Property": true }` オプションの正しいコードの例
/*eslint @stylistic/js/no-multi-spaces: "error"*/
/*eslint key-spacing: ["error", { align: "value" }]*/
var obj = {
first: "first",
second: "second"
};
`"exceptions": { "Property": false }` オプションの不正なコードの例
/*eslint @stylistic/js/no-multi-spaces: ["error", { exceptions: { "Property": false } }]*/
/*eslint key-spacing: ["error", { align: "value" }]*/
var obj = {
first: "first",
second: "second"
};
`"exceptions": { "BinaryExpression": true }` オプションの正しいコードの例
/*eslint @stylistic/js/no-multi-spaces: ["error", { exceptions: { "BinaryExpression": true } }]*/
var a = 1 * 2;
`"exceptions": { "VariableDeclarator": true }` オプションの正しいコードの例
/*eslint @stylistic/js/no-multi-spaces: ["error", { exceptions: { "VariableDeclarator": true } }]*/
var someVar = 'foo';
var someOtherVar = 'barBaz';
`"exceptions": { "ImportDeclaration": true }` オプションの正しいコードの例
/*eslint @stylistic/js/no-multi-spaces: ["error", { exceptions: { "ImportDeclaration": true } }]*/
import mod from 'mod';
import someOtherMod from 'some-other-mod';
includeTabs
このルールでは、複数のタブ(`\t`)またはタブとスペースが混在しているものを複数のスペースとみなします。このオプションのデフォルトは`true`です。
`{ "includeTabs": true }` オプションを適用した場合のこのルールの不正なコードの例
/*eslint @stylistic/js/no-multi-spaces: ["error", { "includeTabs": true }]*/
var a = 1 + 2;
使用しない場合
複数のスペースをチェックして禁止したくない場合は、このルールをオフにする必要があります。