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.