Отключение правила eslint для определенного файла

406

Можно ли отключить правило eslint для всего файла? Нечто такое как:

// eslint-disable-file no-use-before-define 

(Аналогично eslint-disable-line.) Мне часто случается, что в определенном файле я нарушаю определенное правило во многих местах, которое считается нормальным для этого файла, но я не хочу отключать Правило для всего проекта, и я не хочу отключить другие правила для этого конкретного файла.

Томаш Кулич
источник
1
Вы можете добавить правило в качестве первой строки файла следующим образом: / * eslint no-use-before-define: 2 * /
joaumg
2
отлично, это работает, спасибо. Я просто пропустил раздел в документации: eslint.org/docs/user-guide/configuring.html#configuring-rules
Томас Кулич

Ответы:

405

Вы можете отключить / изменить определенное правило для файла, поместив конфигурацию вверху файла.

/* eslint no-use-before-define: 0 */  // --> OFF

or

/* eslint no-use-before-define: 2 */  // --> ON

Больше информации

Gyandeep
источник
8
Есть ли способ поместить правило, .eslintrcкоторое принудительно применяет все специфичные для файла правила, подобные этому, вверху файла?
Джереми
9
@ Джереми, посмотри на мой ответ. Вам просто нужно добавить .eslintignoreфайл в корневой каталог вашего проекта.
prograhammer
Как насчет html или ejs-файла, который, кажется, не работает .eslintignoreи /* eslint no-use-before-define: 0 */ // --> OFFтоже?
Джит
Возможно ли выполнить несколько игнорирований на одной строке?
cheshireoctopus
4
Я попытался / * eslint-disable rule-name * /, и это сработало
Маркос Перейра
304

Чтобы отключить определенное правило для файла:

/* eslint-disable no-use-before-define */

Обратите внимание, что в eslint есть ошибка, когда однострочный комментарий не будет работать -

// eslint-disable max-classes-per-file
// This fails!

Проверьте этот пост

Wahome
источник
28
Это отключит все правила eslint в этом блоке, а не только те, которые no-use-before-defineнамеревались игнорировать
Джереми
13
По сути, это и есть вся идея. Вопрос: «Можно ли отключить правило eslint для всего файла
Wahome
27
@Wahome "Можно ли отключить правило eslint для всего файла?" Слово правило в единственном числе . Ваш ответ отключает все правила множественного числа.
spencer.sm
8
в описании он упомянул, что он хочет что-то вроде отключения определенного правила - прочитайте еще раз вопрос!
Марвен Трабелси
5
Это правда, это не относится ко всему вопросу, но все же является полезным ответом, так как эта тема - лучший результат, когда гуглится «eslint ignore file»
Робин Мэтрал
143

Вы можете указать ESLint игнорировать определенные файлы и каталоги , создав.eslintignore файл в корневом каталоге вашего проекта:

.eslintignore

build/*.js
config/*.js
bower_components/foo/*.js

Шаблоны игнорирования ведут себя согласно .gitignoreспецификации. (Не забудьте перезапустить ваш редактор.)

prograhammer
источник
10
Можно ли игнорировать только определенные правила в этом файле?
Дж. Хестерс
Я бы сказал выше, но мой ответ ниже имеет меньшую оценку: D
OZZIE
2
Очень хорошо! Вы также можете рекурсивно добавлять файлы в каталоги, подкаталоги, подкаталоги, используя **. Например: spec/javascripts/**/*.js.
Виктор
Идеальный - это особенно полезно для файлов, которые автоматически генерируются и часто изменяются (например, aws-exports.js, если вы используете AWS Amplify или MobileHub)
bogan27
Это все еще дает предупреждение
Дан-Классон
117

Вы также можете отключить / включить правило следующим образом:

/* eslint-disable no-use-before-define */
... code that violates rule ...
/* eslint-enable no-use-before-define */

Подобно тому, eslint-disable-lineкак упомянуто в вопросе. Это может быть лучшим способом, если вы не хотите восстанавливать сложную конфигурацию правил при ее повторном включении.

eppsilon
источник
Я предпочитаю этот, потому что он восстанавливает уровень (предупреждение, ошибка), который я определил в моей конфигурации eslint.
Jankapunkt
Это решение, которое сработало для меня. Выключение и включение правила не сработало.
JoshJoe
65

Исходя из количества правил, которые вы хотите игнорировать (Все или Некоторые), и объема его отключения (Строка (и), Файл (ы), Везде), мы имеем 2 × 3 = 6 случаев.


1) Отключение «Все правила»

Случай 1.1: Вы хотите отключить «Все правила» для «Одна или несколько линий»

Put `/* eslint-disable-line */` at the **end of the line(s)**, 
or `/* eslint-disable-next-line */` right **before the line**.

Случай 1.2: Вы хотите отключить «Все правила» для «Один файл»

Put the comment of `/* eslint-disable */` at the top of the file.

Случай 1.3: Вы хотите отключить «Все правила» для «Некоторые файлы»

Есть 3 способа сделать это:

  1. Вы можете пойти с 1.2 и добавить /* eslint-disable */поверх файлов, один за другим.
  2. Вы можете поместить имя файла (ов) в .eslintignore. Это хорошо работает, особенно если у вас есть путь, который вы хотите игнорировать. (например apidoc/**)
  3. С другой стороны , если вы не хотите иметь отдельный .eslintignoreфайл, вы можете добавить "eslintIgnore": ["file1.js", "file2.js"]в соответствии с package.jsonинструкциями здесь .

2) Отключение «некоторых правил»

Случай 2.1: Вы хотите отключить «Некоторые правила» для «Одна или несколько линий»

You can put `/* eslint-disable-line quotes */` (replace `quotes` with your rules) at the end of the line(s), 
or `/* eslint-disable-next-line no-alert, quotes, semi */` before the line.

Случай 2.2: Вы хотите отключить «Некоторые правила» для «Один файл»

Put the `/* eslint-disable no-use-before-define */` comment at the top of the file.  

Больше примеров здесь .

## Случай 2.3: Вы хотите отключить «Некоторые правила» для «Некоторые файлы»

Это менее просто. Вы должны поместить их в "excludedFiles"объект "overrides"вашего раздела, .eslintrcкак указано здесь .

Помощь в
источник
4
PS. Случай 5: Вы хотите отключить «Все правила» для «Все файлы» -npm uninstall eslint ! : p
Айдин
2
Также обратите внимание, что вы можете использовать только /* */комментарий стиля eslint-disable. // eslint-disable no-use-before-defineне сработает. Это работает для // eslint-disable-next-lineхотя.
Айдин
56

Лучше добавить «переопределения» в ваш конфигурационный файл .eslintrc.js. Например, если вы хотите отключить правило camelcase для всех js-файлов, оканчивающихся на Actions, добавьте этот код после области действия правил в .eslintrc.js.

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]
Андрей
источник
Он не отвечает на вопрос ОП о конкретном файле.
wscourge
Отличная альтернатива делать это в файле.
Йозеф Энгельфрост
8
Огромный недооцененный ответ!
Адам
Работает отлично! ИМХО это должен быть принятый ответ. Этот способ остается в файле eslintrc (сохраняет исходные файлы в чистоте) и может переопределять поведение определенных правил для определенных файлов. +1
akagixxer
48

Чтобы временно отключить предупреждения правил в вашем файле, используйте блочные комментарии в следующем формате:

/* eslint-disable */

Это отключит ESLint до

/* eslint-enable */

комментарий достигнут.

Вы можете прочитать больше об этой теме здесь .

Самуэль Люсвата
источник
36

Принятый ответ не работает для меня (возможно, другая версия eslint ...? Я использую eslint v3.19.0), но нашел решение с помощью следующего ...

Поместите следующее в верхней части вашего файла

/* eslint-disable no-use-before-define */

Это отключит правило для всего файла

sfletche
источник
7
... или несколько, как/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Франк
1
То же самое, принятый ответ не работал для меня. Два отличия: изменение eslintна eslint-disableи падение : 0. Используя eslint@4.19.1.
Hellatan
10
/*eslint-disable */

//suppress all warnings between comments
alert('foo');

/*eslint-enable */

это сработало для меня

Шакил
источник
4
Это отключит все правила eslint в этом блоке, а не только те, которые no-use-before-defineнамеревались игнорировать
Джереми
Это помогло мне, спасибо! Также рассмотрите этот ответ на вопрос, отключив все правила, также отключите намеченное правило
Фабиано Сориани,
7

Вы можете просто поместить это, например, вверху файла:

/* eslint-disable no-console */
Ozzie
источник
1

Вы можете отключить определенное правило для файла, используя /*eslint [<rule: "off"], >]*/

/* eslint no-console: "off", no-mixed-operators: "off" */

Версия: eslint@4.3.0

Махеш
источник
Это прекрасно работало, если нужно отключить одно правило только для одного полного файла.
Умакант Патил
0

вы можете настроить свойство переопределения eslint, чтобы отключить определенные правила для файлов, которые соответствуют шаблону glob, как показано ниже.

Здесь я хочу отключить no-duplicate-stringправило для проверки всех файлов.

overrides: [
  {
    files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"],
    rules: {
      'sonarjs/no-duplicate-string': 'off'
    }
  }
]
Сагар Гавхане
источник