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.

Tomas Kulich
źródło
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

Gyandeep
źródło
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

Wahome
źródło
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).

prograhammer
źródło
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.

eppsilon
źródło
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 .

Aidin
źródło
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"   
     }
 }
]
Andrij
źródło
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 .

samuel luswata
źródło
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

sfletche
źródło
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 [email protected].
hellatan
10
/*eslint-disable */

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

/*eslint-enable */

zadziałało dla mnie

Shakil
źródło
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 */
OZZIE
źródło
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: [email protected]

Mahesh
źródło
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'
    }
  }
]
Sagar Gavhane
źródło