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

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

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

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


person Tomas Kulich    schedule 13.01.2016    source источник
comment
Вы можете добавить правило в качестве первой строки файла следующим образом: / * eslint no-use-before-define: 2 * /   -  person joaumg    schedule 13.01.2016
comment
отлично, это работает, спасибо. Я просто пропустил раздел в документации: eslint.org/docs/user -guide / configuring.html # configuring-rules   -  person Tomas Kulich    schedule 13.01.2016
comment
Здесь так много дублированных ответов ... Если бы мод мог удалить все /* eslint-disable */ ответы, кроме первого, это было бы неплохо   -  person Tofandel    schedule 14.05.2021


Ответы (17)


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

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

or

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

Дополнительная информация

person Gyandeep    schedule 13.01.2016
comment
Есть ли способ поместить правило в .eslintrc, которое применяет все правила для конкретного файла, подобные этому, в начало файла? - person Jeremy; 19.10.2016
comment
@ Джереми, посмотри мой ответ. Вам просто нужно добавить файл .eslintignore в корневой каталог вашего проекта. - person prograhammer; 13.12.2016
comment
Отлично! Видел некоторые ответы JSON-y, плавающие вокруг, которые, похоже, не работали для отключения ошибок без верблюжьего регистра, но это (/* eslint camelcase: 0 */) помогло (используя eslint через standard.js) - person Oliv Utilo; 21.05.2018
comment
Я попробовал / * eslint-disable rule-name * /, и это сработало - person Marcos Pereira; 24.01.2019
comment
: 1 делает это предупреждение вместо ошибки - person Arno Teigseth; 09.02.2019
comment
Форматирование двойных комментариев в этом ответе вводит меня в заблуждение. - person A1rPun; 18.11.2019
comment
Вы также можете установить значения env в файле: /*eslint-env node */ - person Matt; 30.09.2020
comment
@ Джереми Да. Я разработал способ удаления определенных правил из определенных файлов или папок. Пожалуйста, проверьте мой ответ прямо здесь: stackoverflow.com/a/65069069/7644846 @prograhammer Помещение файла в .eslintignore отключит ВСЕ правила из файлов. Но @Jeremy хочет отключить определенные правила для файлов. - person Victor; 30.11.2020
comment
Я поддержал этот ответ за правильный ответ. Однако, если мы хотим отключить определенное правило для множества разных файлов, нам нужно добавить /* eslint no-use-before-define: 0 */ в 173 разных файлах, например. Вы можете изменить только один файл: .eslintrc с помощью overrides. Подробнее об этом я объяснил в своем ответе: stackoverflow.com/a/65069069/7644846 - person Victor; 30.11.2020
comment
Использование off теперь также работает: /* eslint no-use-before-define: off */ - person Nero Vanbiervliet; 27.04.2021

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

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

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

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

Проверить это сообщение

person Wahome    schedule 16.10.2016
comment
Это отключит все правила eslint в этом блоке, а не только одно no-use-before-define, предназначенное для игнорирования. - person Jeremy; 19.10.2016
comment
По сути, в этом вся идея. Вопрос в том, можно ли отключить правило eslint для всего файла? - person Wahome; 20.01.2017
comment
@Wahome Можно ли отключить правило eslint для всего файла? Слово правило - единственное число. Ваш ответ отключает все правила множественного числа. - person spencer.sm; 07.02.2018
comment
в описании он упомянул, что хочет что-то вроде отключения определенного правила - прочтите вопрос еще раз! - person Marwen Trabelsi; 14.03.2018
comment
Это правда, это не касается всего вопроса, но все же полезный ответ, поскольку этот поток является лучшим результатом при поиске в Google файла игнорирования eslint - person Robin Métral; 26.10.2019
comment
Просто добавьте правила в конце /* eslint-disable no-use-before-define */ - person Sébastien Loix; 27.02.2020
comment
/* и */, по-видимому, имеют значение (// не сработало). - person acdcjunior; 21.05.2020

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

.eslintignore

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

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

person prograhammer    schedule 12.12.2016
comment
Можно ли игнорировать только определенные правила в этом файле? - person J. Hesters; 19.02.2019
comment
Очень хорошо! Вы также можете добавлять файлы в каталоги, подкаталоги, подкаталоги рекурсивным способом, используя **. Например: spec/javascripts/**/*.js. - person Victor; 04.12.2019
comment
Идеально - это особенно полезно для файлов, которые автоматически создаются и часто меняются (например, aws-exports.js, если вы используете AWS Amplify или MobileHub). - person bogan27; 20.03.2020
comment
Это все еще дает предупреждение - person dan-klasson; 02.04.2020
comment
@ dan-klasson Это неверно. Я использовал этот подход много лет. Если вы не имеете в виду случай, когда вы явно передаете файл в команду eslint, и она предупреждает вас, что вы это проигнорировали. Но в большинстве случаев вы указываете каталог, такой как eslint . или eslint src/. Таким образом, вы НЕ увидите предупреждений об игнорируемых файлах. - person prograhammer; 03.04.2020
comment
Это также подтверждается здесь, в их документации: eslint.org/ docs / 2.13.1 / user-guide / When you pass directories to ESLint, files and directories are silently ignored. If you pass a specific file to ESLint, then you will see a warning indicating that the file was skipped. - person prograhammer; 03.04.2020
comment
Это хук фиксации git. Я не знаю, как это работает. Но я получил предупреждение. - person dan-klasson; 03.04.2020
comment
будьте осторожны при запуске eslint с аргументом --ignore-path. он обойдет .eslintignore содержимое файла. - person Ali Ghanavatian; 27.09.2020
comment
Этот ответ отключает все правила для этих файлов. Чтобы удалить правила специфики из файлов, вы можете проверить мой ответ stackoverflow.com/a/65069069/ 7644846 - person Victor; 30.11.2020
comment
@ J.Hesters Да! Можно удалить определенные правила из файлов с помощью ключа "overrides". Вы можете проверить это в моем ответе прямо здесь: stackoverflow.com/a/65069069/7644846 - person Victor; 30.11.2020
comment
*.min.* будет игнорировать минифицированные файлы - person Washington Guedes; 13.12.2020

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


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


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

Это можно сделать двумя способами:

  1. Поместите /* eslint-disable-line */ в конец строки (строк),
  2. или /* eslint-disable-next-line */ справа перед строкой.

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

  • Поместите комментарий /* eslint-disable */ вверху файла.

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

Это можно сделать тремя способами:

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

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


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

Это можно сделать двумя способами:

  1. Вы можете поставить /* eslint-disable-line quotes */ (заменить quotes своими правилами) в конце строки (строк),

  2. или /* eslint-disable-next-line no-alert, quotes, semi */ перед строкой.


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

  • Поместите комментарий /* eslint-disable no-use-before-define */ вверху файла.

Дополнительные примеры см. здесь.


Случай 2.3. Вы хотите отключить некоторые правила для некоторых файлов

  • Это менее прямолинейно. Вы должны поместить их в "excludedFiles" объект "overrides" раздела вашего .eslintrc в соответствии с инструкциями здесь < / а>.
person Aidin    schedule 22.06.2019
comment
PS. Случай 5: вы хотите отключить все правила для всех файлов - npm uninstall eslint! :п - person Aidin; 23.06.2019
comment
Также обратите внимание, что вы можете использовать комментарий стиля /* */ только для eslint-disable. // eslint-disable no-use-before-define не сработает. Хотя это работает для // eslint-disable-next-line. - person Aidin; 02.11.2019

Вы также можете отключить / включить такое правило:

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

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

person eppsilon    schedule 14.01.2016
comment
Я предпочитаю этот, потому что он восстанавливает уровень (предупреждение, ошибка), который я определил в моей конфигурации eslint. - person Jankapunkt; 16.01.2018
comment
Это решение, которое сработало для меня. Отключение и включение правила не помогло. - person JoshJoe; 24.08.2018

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

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]
person Andriy    schedule 15.03.2019
comment
Он не отвечает на вопрос OP о конкретном файле. - person wscourge; 15.03.2019
comment
Отличная альтернатива тому, чтобы делать это в файле. - person Josef Engelfrost; 26.04.2019
comment
Чрезвычайно недооцененный ответ! - person Adam; 14.06.2019
comment
Работает отлично! ИМХО, это должен быть принятый ответ. Этот способ остается в файле eslintrc (сохраняет исходные файлы в чистоте) и может переопределить поведение определенных правил для определенных файлов. +1 - person akagixxer; 23.01.2020
comment
Хорошо работает для файла *.d.ts, так что вы можете прекратить вывод предупреждений об определениях типов для таких вещей, как no-unused-vars, max-classes-per-file или no-use-before-define - person Developer Dave; 09.02.2021

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

/* eslint-disable */

Это отключит ESLint до тех пор, пока

/* eslint-enable */

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

Дополнительную информацию по этой теме можно найти здесь.

person samuel luswata    schedule 11.08.2017

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

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

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

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

person sfletche    schedule 18.08.2017
comment
... или несколько, например /* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */ - person Frank Nocke; 29.09.2017
comment
то же самое, принятый ответ не сработал для меня. Два отличия: изменение eslint на eslint-disable и удаление : 0. Используя [email protected]. - person hellatan; 23.06.2018

/* eslint-disable */

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

/* eslint-enable */

Это отключит все правила eslint в блоке.

person Shakil    schedule 19.09.2016
comment
Это отключит все правила eslint в этом блоке, а не только одно no-use-before-define, предназначенное для игнорирования. - person Jeremy; 19.10.2016
comment
Это мне помогло, спасибо! Также рассмотрите этот ответ на вопрос, отключение всех правил также отключит предполагаемое правило - person Fabiano Soriani; 25.01.2017

Чтобы отключить определенные правила для файлов внутри папок, вам необходимо использовать ключ "overrides" вашего .eslintrc файла конфигурации.

Например, если вы хотите удалить следующие правила:

  1. no-use-before-define
  2. max-lines-per-function

Для всех файлов в следующем основном каталоге:

/spec

Вы можете добавить это в свой .eslintrc файл ...

"overrides": [
  {
    "files": ["spec/**/*.js"],
    "rules": {
      "no-use-before-define": ["off"],
      "max-lines-per-function": ["off"]
    }
  }
]

Обратите внимание, что я использовал ** внутри spec/**/*.js glob, что означает, что я ищу рекурсивно для всех подпапки внутри папки с именем spec и выбор всех файлов, которые заканчиваются на js, чтобы удалить из них нужные правила.

person Victor    schedule 30.11.2020

Просто и эффективно.

Eslint 6.7.0 предоставил ignorePatterns, чтобы записать его в .eslintrc.json, как в этом примере:

{
    "ignorePatterns": ["fileToBeIgnored.js"],
    "rules": {
        //...
    }
}

См. документы

person fjplaurr    schedule 30.11.2020

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

/* eslint-disable no-console */
person OZZIE    schedule 15.02.2019

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

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

overrides: [
  {
    files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"],
    rules: {
      'sonarjs/no-duplicate-string': 'off'
    }
  }
]
person Sagar    schedule 13.04.2020
comment
Искал именно это! Спасибо - person Djamel; 02.07.2020

На сегодняшний день у меня нет ответа, но размещение этого в верхней части файла действительно работает:

/* eslint-disable @typescript-eslint/no-unused-vars */

Важно знать, что, по крайней мере, в моем случае, тип комментария имеет значение. Предыдущий комментарий мне подходит, но следующий не работает:

// eslint-disable @typescript-eslint/no-unused-vars
person Javi Marzán    schedule 02.08.2020

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

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

Версия: [email protected]

person Mahesh    schedule 30.11.2018
comment
Это отлично сработало, если нужно отключить одно правило только для одного полного файла. - person Umakant Patil; 19.03.2020

вы можете добавить эти строки вверху файла.

// @ts-nocheck
/* eslint-disable */
person Muhammed Moussa    schedule 17.05.2021

Просто создайте пустой файл .eslintignore в корне вашего проекта, указав путь к файлу, который вы хотите игнорировать.

Источник: https://eslint.org/docs/2.13.1/user-guide/configuring#:%7E:text=To%20disable%20rule%20warnings%20in,*%2F%20alert(%27foo%27)%3B

Строка Игнорирование файлов и каталогов

person Napster Scofield    schedule 18.08.2020