Как я могу отключить правило без ограничений синтаксиса ESLint только для ForOfStatement?

Я использую ESLint для своей программы ES6 с набором правил AirBNB. По уважительным и адекватным причинам я использую конструкцию for...of в своем коде, но ESLint возражает против нее, выдавая ошибку no-restricted-syntax.

Документация по адресу http://eslint.org/docs/rules/no-restricted-syntax объясняет, как я могу указать в моем .eslint файле набор узлов синтаксического дерева, на которые он возражает: например, если все, что мне не нравится, это оператор with, я могу использовать:

"синтаксис без ограничений": ["предупреждать", "WithStatement"]

Но я не хочу указывать на весь набор неутвержденных конструкций, я просто хочу сказать, что одну такую ​​конструкцию считаю приемлемой. Что-то концептуально похожее на

ESlint.rules ['синтаксис без ограничений']. RemoveEntry ('ForOfStatement');

Есть ли способ сделать это в файле ESLint? Или, если это не удается, есть ли хотя бы способ заставить его сообщить мне, какова его текущая no-restricted-syntax конфигурация, чтобы я мог вручную удалить из него ForOfStatement?


person Mike Taylor    schedule 14.02.2017    source источник
comment
ярлык, не лучший ответ - использовать правила отключения eslint с комментариями для блоков, строк или файлов.   -  person amir hosein ahmadi    schedule 14.02.2017
comment
Если вы установили набор правил airbnb, вы наверняка можете найти его в соответствующем файле конфигурации?   -  person Bergi    schedule 14.02.2017
comment
Спасибо, амир. Я знаю, как сказать ESLint игнорировать эту строку или игнорировать это правило для этой строки: я хочу быть более амбициозным и научить ESLint, что я считаю использование for...of всегда нормальным.   -  person Mike Taylor    schedule 15.02.2017


Ответы (1)


Проверить существующую конфигурацию

В зависимости от текущей основной ветки eslint-config-airbnb в настоящее время отключает четыре формы синтаксиса:

  1. ForInStatement
  2. ForOfStatement
  3. LabeledStatement
  4. WithStatement

Вы можете проверить это или увидеть, есть ли какие-либо различия, используя --print-config ESLint. Флаг CLI:

$ eslint --print-config file.js

ESLint распечатает конфигурацию, которую он будет использовать для линтинга file.js, и вы можете найти там конфигурацию для правила no-restricted-syntax.

Переопределить no-restricted-syntax

Если вы хотите изменить настройки Airbnb, вы можете сделать это в разделе rules вашего .eslintrc.json файла:

{
    "rules": {
        "no-restricted-syntax": ["error", "ForInStatement", "LabeledStatement", "WithStatement"]
    }
}

Невозможно настроить правило для использования конфигурации no-restricted-syntax, унаследованной от предустановки Airbnb, за исключением единственной синтаксической формы.

person btmills    schedule 14.02.2017
comment
Спасибо, btmills. Часть головоломки, которую мне не хватало, была --print-config, которая, по крайней мере, позволяет мне вручную создавать .eslint конфигурацию правил, которая вносит минимальные изменения в то, что я унаследовал. - person Mike Taylor; 15.02.2017
comment
Жаль, что нет возможности .eslintrc изменить существующую конфигурацию правил, а не заменить ее; но так как это так, ваш ответ говорит мне все, что нужно знать. Приму, как только найду нужную кнопку! - person Mike Taylor; 15.02.2017
comment
Как я могу включить ForInStatement и ForOfStatement? - person shinzou; 13.06.2018