Styling ESlint для вертикального выравнивания точек - PullRequest
2 голосов
/ 24 сентября 2019

Прелюдия

Я предпочитаю держать точки вертикально выровненными:

const my_long_name = louis.what()
                          .a()
                          .wonderful()
                          .world();

, но ESlint жалуется

`Expected indentation of 4 spaces but found 26. [indent]`.

Мой ~/.eslintrc.js имеет

module.exports = {
    extends: [
        'airbnb-base',
    ],
    ...
}

Вопрос

Как я могу использовать airbnb-base, при этом точки имеют вертикальное выравнивание (и проверяют ESlint на это)?

(другой стиль делает это изbox? Запись

    extends: [
        'crockford',
    ],

не сработала.)


Обновление 1

Если я напишу в ~/.eslint.js:

module.exports = {
    rules: {
        "indent": ["error", 4, { "MemberExpression": 0 }]
    }
    ...
};

сообщение становится

Expected indentation of 0 spaces but found 26. [indent]

, а затем ESlint ожидает форматирование:

const my_long_name = louis.what()
.a()
.wonderful()
.world();

Ответ Элетана дает подсказку для отключения отступов в цепных вызовах с использованием:

module.exports = {
    rules: {
        "indent": ["error", 4, { "MemberExpression": "off" }]
    }
    ...
};

Это лучше, чем либо продолжать получать предупреждения, либо нарушать вертикальное выравнивание точек.

Можно ли продолжать получать предупреждения, если точки выровнены по вертикали или{ "MemberExpression": "off" } лучшее, что можно сделать с ESlint в конце 2019 года?


Обновление 2

Я запустил eslint --init на следующих двух примерах кода (ибез дополнительного кода).

~ / .eslintrc-строго-four.js

let hello = louis.what()
    .a()
    .wonderful()
    .world();

~ / .eslintrc-многоточие по вертикали.js

let hello = louis.what()
                 .a()
                 .wonderful()
                 .world();

и получил следующую разницу:

> diff ~/.eslintrc-strictly-four.js ~/.eslintrc-dots-vertically-aligned.js 
61c61
<         "indent": "error",
---
>         "indent": "off",

Так что, пока кто-то не осветит это авторитетным ответом, это способ сделать это.

1 Ответ

1 голос
/ 24 сентября 2019

Похоже, что установка опции MemberExpression в off для правила indent может решить вашу проблему.

"MemberExpression" (по умолчанию: 1)обеспечивает уровень отступа для многострочных цепочек свойств.Это также может быть установлено на "off", чтобы отключить проверку на отступ MemberExpression.

Например, в вашем .eslintrc:

"rules": {
    "indent": ["error", 4, { "MemberExpression": 0 }]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...