コンテンツにスキップ

@stylistic/

comma-style

コンマスタイルルールは、コンマ区切りのリストのスタイルを強制します。JavaScriptでは主に2つのコンマスタイルが使用されます。

  • 標準スタイル。コンマは現在の行の末尾に配置されます。
  • コンマファーストスタイル。コンマは次の行の先頭に配置されます。

コンマファーストスタイルを使用する理由の1つは、欠落しているコンマや末尾のコンマを追跡するのに役立つことです。変数宣言でコンマが欠落しているとグローバル変数のリークが発生する可能性があり、末尾のコンマは古いバージョンのIEでエラーが発生する可能性があるため、これらは問題となります。

ルールの詳細

このルールは、配列リテラル、オブジェクトリテラル、および変数宣言で一貫したコンマスタイルを強制します。

このルールは、次のいずれの場合にも適用されません。

  • 改行の前後にコンマが続く場合(単独のコンマ)
  • 単一行の配列リテラル、オブジェクトリテラル、および変数宣言

オプション

このルールには文字列オプションがあります。

  • "last" (デフォルト) は、配列要素、オブジェクトプロパティ、または変数宣言の後に、同じ行にコンマを付ける必要があります。
  • "first" は、配列要素、オブジェクトプロパティ、または変数宣言の前に、同じ行にコンマを付ける必要があります。

このルールは、追加の exceptions オブジェクトも受け入れます。

  • "exceptions" には、JavaScriptコードの抽象構文木(AST)のノードタイプに対応する名前のプロパティがあります。

    • "ArrayExpression": true は、配列リテラルのコンマスタイルを無視します。
    • "ArrayPattern": true は、分割代入の配列パターンのコンマスタイルを無視します。
    • "ArrowFunctionExpression": true は、アロー関数式の引数のコンマスタイルを無視します。
    • "CallExpression": true は、関数呼び出しの引数のコンマスタイルを無視します。
    • "FunctionDeclaration": true は、関数宣言の引数のコンマスタイルを無視します。
    • "FunctionExpression": true は、関数式の引数のコンマスタイルを無視します。
    • "ImportDeclaration": true は、import宣言の指定子のコンマスタイルを無視します。
    • "ObjectExpression": true は、オブジェクトリテラルのコンマスタイルを無視します。
    • "ObjectPattern": true は、分割代入のオブジェクトパターンのコンマスタイルを無視します。
    • "VariableDeclaration": true は、変数宣言のコンマスタイルを無視します。
    • "NewExpression": true は、コンストラクター式の引数のコンマスタイルを無視します。

ESTree で定義されているノードタイプを判別するには、espreeパーサーでAST Explorer を使用します。

last

デフォルトの "last" オプションでこのルールの**誤った**コードの例

js
/*eslint @stylistic/comma-style: ["error", "last"]*/

var foo = 1
,
bar = 2; var foo = 1
,
bar = 2;
var foo = ["apples"
,
"oranges"];
function baz() { return { "a": 1
,
"b:": 2
}; }
誤り

デフォルトの "last" オプションでこのルールの**正しい**コードの例

js
/*eslint @stylistic/comma-style: ["error", "last"]*/

var foo = 1, bar = 2;

var foo = 1,
    bar = 2;

var foo = ["apples",
           "oranges"];

function baz() {
    return {
        "a": 1,
        "b:": 2
    };
}
正しい

first

"first" オプションでこのルールの**誤った**コードの例

js
/*eslint @stylistic/comma-style: ["error", "first"]*/

var foo = 1
,
bar = 2; var foo = ["apples"
,
"oranges"]; function baz() { return { "a": 1
,
"b:": 2 }; }
誤り

"first" オプションでこのルールの**正しい**コードの例

js
/*eslint @stylistic/comma-style: ["error", "first"]*/

var foo = 1, bar = 2;

var foo = 1
    ,bar = 2;

var foo = ["apples"
          ,"oranges"];

function baz() {
    return {
        "a": 1
        ,"b:": 2
    };
}
正しい

exceptions

使用例として、varステートメント**のみ**でコンマスタイルを強制する場合があります。

サンプルの "first", { "exceptions": { … } } オプションでこのルールの**誤った**コードの例

js
/*eslint @stylistic/comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/

var o = {}
,
a = [];
誤り

サンプルの "first", { "exceptions": { … } } オプションでこのルールの**正しい**コードの例

js
/*eslint @stylistic/comma-style: ["error", "first", { "exceptions": { "ArrayExpression": true, "ObjectExpression": true } }]*/

var o = {fst:1,
         snd: [1,
               2]}
  , a = [];
正しい

使用しない場合

プロジェクトで一貫したコンマスタイルを強制する必要がない場合は、このルールを安全に無効にすることができます。

MITライセンスでリリースされています。