Wyłączanie reguły eslint dla określonego pliku


404

Czy można wyłączyć regułę eslint dla całego pliku? Coś takiego jak:

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

(Analogicznie do eslint-disable-line.) Dość często zdarza mi się, że w pewnym pliku łamię określoną regułę w wielu miejscach, co jest uważane za OK dla tego pliku, ale nie chcę wyłączać reguła dla całego projektu, ani nie chcę wyłączać innych reguł dla tego konkretnego pliku.


1
Możesz dodać regułę jako pierwszą linię pliku w następujący sposób: / * eslint no-use-before-
definity

2
idealne, to działa, dziękuję. Właśnie przeoczyłem sekcję w dokumentacji: eslint.org/docs/user-guide/configuring.html#configuring-rules
Tomas Kulich

Odpowiedzi:


404

Możesz wyłączyć / zmienić konkretną regułę dla pliku, umieszczając konfiguracje na górze pliku.

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

or

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

Więcej informacji


8
Czy istnieje sposób, aby umieścić regułę, .eslintrcktóra wymusza wszystkie reguły specyficzne dla tego pliku na początku pliku?
Jeremy,

9
@Jeremy zobacz moją odpowiedź. Musisz tylko dodać .eslintignoreplik do katalogu głównego projektu.
prograhammer

Co powiesz na plik HTML lub EJS, który wydaje się nie działać .eslintignorei /* eslint no-use-before-define: 0 */ // --> OFFjedno z nich?
Jeet

Czy można wykonać wiele ignorowań w jednej linii?
cheshireoctopus

4
Próbowałem / * eslint-disable nazwa-reguły * / i zadziałało
Marcos Pereira

304

Aby wyłączyć określoną regułę dla pliku:

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

Uwaga: w eslint występuje błąd, w którym komentarz w jednym wierszu nie działa -

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

Sprawdź ten post


28
Spowoduje to wyłączenie wszystkich reguł eslint w obrębie tego bloku, nie tylko tych, które no-use-before-definemają być ignorowane
Jeremy,

13
Zasadniczo to jest cały pomysł. Pytanie brzmi: „Czy można wyłączyć regułę eslint dla całego pliku ?”
Wahome,

27
@Wahome „Czy można wyłączyć regułę eslint dla całego pliku?” Reguła słowa jest pojedyncza . Twoja odpowiedź wyłącza wszystkie zasady w liczbie mnogiej.
spencer.sm

8
w opisie wspomniał, że chce czegoś takiego jak wyłączenie określonej reguły - przeczytaj ponownie pytanie!
Marwen Trabelsi

5
To prawda, to nie odnosi się do całego pytania, ale nadal jest użyteczną odpowiedzią, ponieważ ten wątek jest najlepszym wynikiem, kiedy googling „eslint ignore file”
Robin Métral

143

Możesz powiedzieć ESLint, aby ignorował określone pliki i katalogi , tworząc .eslintignoreplik w katalogu głównym projektu:

.eslintignore

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

Wzorce ignorowania zachowują się zgodnie ze .gitignorespecyfikacją. (Nie zapomnij zrestartować edytora).


10
Czy można zignorować tylko określone reguły w tym pliku?
J. Hesters

Chciałbym głosować, ale moja odpowiedź poniżej ma mniej punktów: D
OZZIE,

2
Bardzo dobrze! Możesz także dodawać pliki do katalogów, podkatalogów, podkatalogów w sposób rekurencyjny za pomocą **. Na przykład: spec/javascripts/**/*.js.
Victor

Idealny - jest to szczególnie przydatne w przypadku plików, które są automatycznie generowane i często zmieniane (np. Aws-exports.js, jeśli używasz AWS's Amplify lub MobileHub)
bogan27

To wciąż daje ostrzeżenie
dan-klasson

117

Możesz także wyłączyć / włączyć taką regułę:

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

Podobnie eslint-disable-linejak wspomniano w pytaniu. Może to być lepsza metoda, jeśli nie chcesz przywracać skomplikowanej konfiguracji reguł podczas jej ponownego włączania.


Wolę ten, ponieważ przywraca poziom (ostrzeżenie, błąd), który zdefiniowałem w mojej konfiguracji eslint.
Jankapunkt

To rozwiązanie działało dla mnie. Wyłączanie i włączanie reguły nie działało.
JoshJoe

65

W oparciu o liczbę reguł, które chcesz zignorować (wszystkie lub niektóre) oraz zakres ich wyłączania (linie, pliki), wszędzie), mamy 2 × 3 = 6 przypadków.


1) Wyłączanie „wszystkich reguł”

Przypadek 1.1: Chcesz wyłączyć „Wszystkie reguły” dla „Jedna lub więcej linii”

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

Przypadek 1.2: Chcesz wyłączyć „Wszystkie reguły” dla „Jednego pliku”

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

Przypadek 1.3: Chcesz wyłączyć „Wszystkie reguły” dla „Niektórych plików”

Można to zrobić na 3 sposoby:

  1. Możesz przejść do wersji 1.2 i dodawać /* eslint-disable */pliki jeden po drugim.
  2. Możesz wstawić nazwy plików .eslintignore. Działa to dobrze, zwłaszcza jeśli masz ścieżkę , którą chcesz zignorować. (np. apidoc/**)
  3. Ewentualnie, jeśli nie chcesz mieć oddzielny .eslintignoreplik, można dodać "eslintIgnore": ["file1.js", "file2.js"]w package.jsonsposób opisany tutaj .

2) Wyłączanie „niektórych reguł”

Przypadek 2.1: Chcesz wyłączyć „Niektóre reguły” dla „Jedna lub więcej linii”

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.

Przypadek 2.2: Chcesz wyłączyć „Niektóre reguły” dla „Jednego pliku”

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

Więcej przykładów tutaj .

## Case 2.3: Chcesz wyłączyć „Some Rules” dla „Some files”

Jest to mniej proste. Powinieneś umieścić je w "excludedFiles"obiekcie "overrides"swojej sekcji .eslintrczgodnie z instrukcją tutaj .


4
PS. Przypadek 5: Chcesz wyłączyć „Wszystkie reguły” dla „Wszystkich plików” - npm uninstall eslint! : p
Aidin

2
Pamiętaj też, że możesz używać tylko /* */komentarzy do stylu eslint-disable. // eslint-disable no-use-before-definenie zadziała. // eslint-disable-next-lineAle to działa .
Aidin

56

Lepiej jest dodać „przesłonięcia” w pliku konfiguracyjnym .eslintrc.js. Na przykład, jeśli nie chcesz wyłączać reguły Camelcase dla wszystkich plików js kończących się na Actions, dodaj ten kod po zakresie reguł w .eslintrc.js.

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]

Nie odpowiada na pytanie OP dotyczące określonego pliku.
wscourge

Świetna alternatywa dla robienia tego w pliku.
Josef Engelfrost

8
Bardzo niedoceniana odpowiedź!
Adam

Działa świetnie! IMHO powinna to być zaakceptowana odpowiedź. W ten sposób pozostaje w pliku eslintrc (utrzymuje pliki źródłowe w czystości) i może zastąpić zachowanie określonych reguł dla określonych plików. +1
akagixxer

48

Aby tymczasowo wyłączyć ostrzeżenia reguł w pliku, użyj komentarzy blokowych w następującym formacie:

/* eslint-disable */

Spowoduje to wyłączenie ESLint do czasu

/* eslint-enable */

komentarz został osiągnięty.

Możesz przeczytać więcej na ten temat tutaj .


36

Zaakceptowana odpowiedź nie działała dla mnie (może inna wersja eslint ...? Używam eslint v3.19.0), ale znalazłem rozwiązanie z następującymi ...

Umieść następujące elementy na górze pliku

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

Spowoduje to wyłączenie reguły dla całego pliku


7
... lub wielu, jak/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Frank Nocke

1
to samo, zaakceptowana odpowiedź nie działała dla mnie. Dwie różnice: Zmiana eslintdo eslint-disablei upuszczanie : 0. Korzystanie z eslint@4.19.1.
hellatan

10
/*eslint-disable */

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

/*eslint-enable */

zadziałało dla mnie


4
Spowoduje to wyłączenie wszystkich reguł eslint w obrębie tego bloku, nie tylko tych, które no-use-before-definemają być ignorowane
Jeremy,

To mi pomogło, dzięki!
Zastanów się

7

Możesz po prostu umieścić to na przykład na górze pliku:

/* eslint-disable no-console */

1

Możesz wyłączyć określoną regułę dla pliku, używając /*eslint [<rule: "off"], >]*/

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

Wersja: eslint@4.3.0


Działa to idealnie w przypadku, gdy trzeba wyłączyć jedną regułę tylko dla jednego kompletnego pliku.
Umakant Patil

0

możesz skonfigurować właściwość przesłonięcia eslint, aby wyłączyć określone reguły dla plików, które pasują do wzorca globu, jak poniżej.

Tutaj chcę wyłączyć no-duplicate-stringregułę dla testowania wszystkich plików.

overrides: [
  {
    files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"],
    rules: {
      'sonarjs/no-duplicate-string': 'off'
    }
  }
]
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.