Вимкнення правила eslint для певного файлу


404

Чи можна вимкнути правило eslint для всього файлу? Щось таке, як:

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

(Аналогічно eslint-disabled-line.) Мені трапляється досить часто, що в певному файлі я порушую певне правило у багатьох місцях, яке вважається нормальним для цього файлу, але я не хочу відключати правило для всього проекту, і я не хочу відключати інші правила для цього конкретного файлу.


1
Ви можете додати правило як перший рядок файлу так: / * eslint no-use-before-define: 2 * /
joaumg

2
ідеально, що працює, дякую. Я щойно переглянув розділ у документах: eslint.org/docs/user-guide/configuring.html#configuring-rules
Томаш Куліч,

Відповіді:


404

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

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

or

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

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


8
Чи є спосіб встановити правило, .eslintrcяке примушує всі специфічні для цього файлу правила вгорі файлу?
Джеремі

9
@Jeremy дивіться мою відповідь. Вам просто потрібно додати .eslintignoreфайл до кореневого каталогу вашого проекту.
prograhammer

Як щодо HTML або файлу EJs, що не схоже на роботу .eslintignoreі /* eslint no-use-before-define: 0 */ // --> OFFякі?
Джит

Чи можливо виконувати кілька ігнорів в одному рядку?
cheshireoctopus

4
Я спробував / * eslint-disabled rule-name * / і це спрацювало
Marcos Pereira

304

Щоб вимкнути певне правило для файлу:

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

Зауважте, що у програмі eslint є помилка, коли коментар до одного рядка не працюватиме -

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

Перевірте цю публікацію


28
Це вимкне всі правила eslint у цьому блоці, а не лише no-use-before-defineте, що було ігноровано
Джеремі

13
В основному це вся ідея. Питання "Чи можна вимкнути правило eslint для всього файлу ?"
Wahome

27
@Wahome "Чи можливо вимкнути правило eslint для всього файлу?" Правило слова однини . Ваша відповідь вимикає всі правила множини.
spencer.sm

8
в описі він зазначав, що він хоче щось таке, як відключення конкретного правила - прочитайте ще раз питання!
Marwen Trabelsi

5
Це правда, це не стосується всього питання, але все-таки корисна відповідь, оскільки ця тема є найкращим результатом, коли гуглінг "eslint file ignore file"
Робін Мітраль,

143

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

.eslintignore

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

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


10
Чи можна ігнорувати лише конкретні правила у цьому файлі?
Дж. Гестерс

Я б підтримав, але моя відповідь нижче має менший бал: D
OZZIE

2
Дуже хороший! Ви також можете додавати файли в каталогах, підкаталогах, піддиректоріях рекурсивно, використовуючи **. Наприклад: spec/javascripts/**/*.js.
Віктор

Ідеально - Це особливо корисно для файлів, які автоматично генеруються та часто змінюються (наприклад, aws-export.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тому, що було зазначено у питанні. Це може бути кращим методом, якщо вам не потрібно відновити складну конфігурацію правил при повторному ввімкненні.


Я віддаю перевагу цьому, оскільки він відновлює рівень (попередження, помилка), визначений у моєму конфігурації 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: Ви хочете відключити "Усі правила" для "Деякі файли"

Є три способи зробити це:

  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! : Р
Aidin

2
Також зауважте, що ви можете використовувати лише /* */коментарі до стилю eslint-disable. // eslint-disable no-use-before-defineне буде працювати. Це працює для, // eslint-disable-next-lineхоча.
Aidin

56

Краще додати "перевизначення" у свій конфігураційний файл .eslintrc.js. Наприклад, якщо ви не можете вимкнути правило верблюда для всіх js-файлів, що закінчуються на "Дії", додайте цей код після дії правил у .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 */

Це вимкне правило для всього файлу


7
... або багаторазово, як/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Френк Нокк

1
те саме, прийнята відповідь не працювала для мене. Два відмінності: зміна eslintв eslint-disableі скидає : 0. Використовуючи eslint@4.19.1.
Геллатан

10
/*eslint-disable */

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

/*eslint-enable */

це працювало для мене


4
Це вимкне всі правила eslint у цьому блоці, а не лише no-use-before-defineте, що було ігноровано
Джеремі

Це мені допомогло, дякую! Також врахуйте цю відповідь на питання, якщо відключити всі правила, також вимкніть призначене правило
Fabiano Soriani

7

Ви можете просто поставити це, наприклад, у верхній частині файлу:

/* eslint-disable no-console */

1

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

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

Версія: eslint@4.3.0


Це спрацювало чудово, якщо вам потрібно відключити одне правило лише для одного повного файлу.
Umakant Patil

0

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

Тут я хочу вимкнути no-duplicate-stringправило для тестування всіх файлів.

overrides: [
  {
    files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"],
    rules: {
      'sonarjs/no-duplicate-string': 'off'
    }
  }
]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.