Deaktivieren der Eslint-Regel für eine bestimmte Datei

404

Ist es möglich, die Eslint-Regel für die gesamte Datei zu deaktivieren? So etwas wie:

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

(Analog zu eslint-disable-line.) Es kommt mir ziemlich oft vor, dass ich in einer bestimmten Datei an vielen Stellen gegen eine bestimmte Regel verstoße, die für diese Datei als OK angesehen wird, aber ich möchte die nicht deaktivieren Regel für das gesamte Projekt, noch möchte ich andere Regeln für diese bestimmte Datei deaktivieren.

Tomas Kulich
quelle
1
Sie können eine Regel als erste Zeile der Datei wie folgt hinzufügen: / * eslint no-use-before-define: 2 * /
joaumg
2
perfekt, das funktioniert, danke. Ich habe gerade den Abschnitt in den Dokumenten übersehen: eslint.org/docs/user-guide/configuring.html#configuring-rules
Tomas Kulich

Antworten:

404

Sie können eine bestimmte Regel für eine Datei deaktivieren / ändern, indem Sie die Konfigurationen oben in die Datei einfügen.

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

or

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

Mehr Info

Gyandeep
quelle
8
Gibt es eine Möglichkeit, eine Regel .eslintrceinzufügen, die alle dateispezifischen Regeln wie diese oben in der Datei erzwingt ?
Jeremy
9
@ Jeremy siehe meine Antwort. Sie müssen lediglich eine .eslintignoreDatei zu Ihrem Projektstammverzeichnis hinzufügen .
Programmierer
Wie wärs mit einem HTML oder einer EJS - Datei, die nicht zu funktionieren scheint .eslintignoreund /* eslint no-use-before-define: 0 */ // --> OFFentweder?
Jeet
Ist es möglich, mehrere Ignorierungen in einer Zeile durchzuführen?
Cheshireoctopus
4
Ich habe versucht / * eslint-disable Regel-Name * / und es hat funktioniert
Marcos Pereira
304

So deaktivieren Sie eine bestimmte Regel für die Datei:

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

Beachten Sie, dass es einen Fehler in eslint gibt, bei dem ein einzeiliger Kommentar nicht funktioniert.

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

Überprüfen Sie diesen Beitrag

Wahome
quelle
28
Dies wird alle Eslint-Regeln innerhalb dieses Blocks deaktivieren, nicht nur die no-use-before-define, die ignoriert werden soll
Jeremy
13
Grundsätzlich ist das die ganze Idee. Die Frage ist "Ist es möglich, die Eslint-Regel für die gesamte Datei zu
deaktivieren
27
@Wahome "Ist es möglich, die Eslint- Regel für die gesamte Datei zu deaktivieren ?" Die Wortregel ist singulär . Ihre Antwort deaktiviert alle Regeln im Plural.
spencer.sm
8
In der Beschreibung erwähnte er, dass er so etwas wie das Deaktivieren bestimmter Regeln möchte - lesen Sie die Frage noch einmal!
Marwen Trabelsi
5
Es ist wahr, dies ist nicht die ganze Frage, aber immer noch eine nützliche Antwort, da dieser Thread ein Top-Ergebnis ist, wenn "eslint ignore file" gegoogelt wird
Robin Métral
143

Sie können ESLint anweisen , bestimmte Dateien und Verzeichnisse zu ignorieren, indem Sie eine .eslintignoreDatei im Stammverzeichnis Ihres Projekts erstellen :

.eslintignore

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

Die Ignoriermuster verhalten sich gemäß der .gitignoreSpezifikation. (Vergessen Sie nicht, Ihren Editor neu zu starten.)

Programmierer
quelle
10
Ist es möglich, nur bestimmte Regeln in dieser Datei zu ignorieren?
J. Hesters
Ich würde upvoten, aber meine Antwort unten hat weniger Punktzahl: D
OZZIE
2
Sehr schön! Sie können mit ** auch Dateien in Verzeichnissen, Unterverzeichnissen und Unterverzeichnissen rekursiv hinzufügen. Zum Beispiel : spec/javascripts/**/*.js.
Victor
Perfekt - Dies ist besonders nützlich für Dateien, die automatisch generiert und häufig geändert werden (wie aws-exports.js, wenn Sie Amplify oder MobileHub von AWS verwenden)
bogan27
Dies gibt immer noch eine Warnung
dan-klasson
117

Sie können eine Regel wie die folgende auch deaktivieren / aktivieren:

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

Ähnlich eslint-disable-linewie in der Frage erwähnt. Dies ist möglicherweise eine bessere Methode, wenn Sie beim erneuten Aktivieren keine komplizierte Regelkonfiguration wiederherstellen müssen.

Eppsilon
quelle
Ich bevorzuge dieses, weil es die Ebene (Warnung, Fehler) wiederherstellt, die ich in meiner eslint-Konfiguration definiert habe.
Jankapunkt
Dies ist die Lösung, die für mich funktioniert hat. Das Ein- und Ausschalten der Regel hat nicht funktioniert.
JoshJoe
65

Basierend auf der Anzahl der Regeln, die Sie ignorieren möchten (Alle oder Einige) und dem Umfang der Deaktivierung (Zeile (n), Datei (en), Überall), haben wir 2 × 3 = 6 Fälle.


1) Deaktivieren von "Alle Regeln"

Fall 1.1: Sie möchten "Alle Regeln" für "Eine oder mehrere Zeilen" deaktivieren.

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

Fall 1.2: Sie möchten "Alle Regeln" für "Eine Datei" deaktivieren.

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

Fall 1.3: Sie möchten "Alle Regeln" für "Einige Dateien" deaktivieren.

Es gibt drei Möglichkeiten, wie Sie dies tun können:

  1. Sie können mit 1.2 fortfahren und /* eslint-disable */die Dateien einzeln hinzufügen .
  2. Sie können die Dateinamen eingeben .eslintignore. Dies funktioniert besonders dann gut, wenn Sie einen Pfad haben , den Sie ignorieren möchten. (zB apidoc/**)
  3. Alternativ, wenn Sie keine separate haben wollen .eslintignoreDatei können Sie fügen "eslintIgnore": ["file1.js", "file2.js"]in package.jsonwie angewiesen hier .

2) Deaktivieren von "Einige Regeln"

Fall 2.1: Sie möchten "Einige Regeln" für "Eine oder mehrere Zeilen" deaktivieren.

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.

Fall 2.2: Sie möchten "Einige Regeln" für "Eine Datei" deaktivieren.

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

Weitere Beispiele hier .

## Fall 2.3: Sie möchten "Einige Regeln" für "Einige Dateien" deaktivieren.

Das ist weniger einfach. Sie sollten sie in den "excludedFiles"Gegenstand "overrides"Ihres Abschnitts legen, .eslintrcwie hier angegeben .

Hilfe bei der
quelle
4
PS. Fall 5: Sie möchten "Alle Regeln" für "Alle Dateien" deaktivieren - npm uninstall eslint! : p
Aidin
2
Beachten Sie auch, dass Sie nur /* */Stilkommentare für verwenden können eslint-disable. // eslint-disable no-use-before-definewird nicht funktionieren. Es funktioniert aber für // eslint-disable-next-line.
Aidin
56

Es ist besser, "Überschreibungen" in Ihre .eslintrc.js-Konfigurationsdatei einzufügen. Wenn Sie beispielsweise die Camelcase-Regel nicht für alle js-Dateien deaktivieren möchten, die auf Aktionen enden, fügen Sie diesen Code nach dem Regelbereich in .eslintrc.js hinzu.

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]
Andriy
quelle
Die Frage von OP zu einer bestimmten Datei wird nicht beantwortet.
wscourge
Tolle Alternative zu In-File.
Josef Engelfrost
8
Sehr unterschätzte Antwort!
Adam
Funktioniert super! IMHO sollte dies die akzeptierte Antwort sein. Diese Methode bleibt in der eslintrc-Datei (hält die Quelldateien sauber) und kann das Verhalten bestimmter Regeln für bestimmte Dateien überschreiben. +1
akagixxer
48

Verwenden Sie Blockkommentare im folgenden Format, um Regelwarnungen in Ihrer Datei vorübergehend zu deaktivieren:

/* eslint-disable */

Dadurch wird ESLint bis zum deaktiviert

/* eslint-enable */

Kommentar ist erreicht.

Weitere Informationen zu diesem Thema finden Sie hier .

samuel luswata
quelle
36

Akzeptierte Antwort hat bei mir nicht funktioniert (vielleicht eine andere Version von eslint ...? Ich benutze eslint v3.19.0 ), aber eine Lösung mit den folgenden gefunden ...

Platzieren Sie Folgendes oben in Ihrer Datei

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

Dadurch wird die Regel für die gesamte Datei deaktiviert

sfletche
quelle
7
... oder mehrere, wie/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Frank Nocke
1
Die gleiche, akzeptierte Antwort hat bei mir nicht funktioniert. Zwei Unterschiede: Wechseln eslintzu eslint-disableund Löschen : 0. Verwenden von [email protected].
Hellatan
10
/*eslint-disable */

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

/*eslint-enable */

es hat bei mir funktioniert

Shakil
quelle
4
Dies wird alle Eslint-Regeln innerhalb dieses Blocks deaktivieren, nicht nur die no-use-before-define, die ignoriert werden soll
Jeremy
Das hat mir geholfen, danke! Betrachten Sie auch diese Antwort auf die Frage, deaktivieren Sie alle Regeln auch deaktivieren Sie die beabsichtigte Regel
Fabiano Soriani
7

Sie können dies zum Beispiel ganz oben in die Datei einfügen:

/* eslint-disable no-console */
OZZIE
quelle
1

Sie können eine bestimmte Regel für eine Datei mithilfe von deaktivieren /*eslint [<rule: "off"], >]*/

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

Ausführung: [email protected]

Mahesh
quelle
Dies funktionierte einwandfrei, falls eine Regel nur für eine vollständige Datei deaktiviert werden muss.
Umakant Patil
0

Sie können die Eigenschaft eslint overrides so konfigurieren, dass bestimmte Regeln für Dateien deaktiviert werden, die dem Glob-Muster wie unten entsprechen.

Hier möchte ich das ausschalten no-duplicate-string Regel zum Testen aller Dateien deaktivieren.

overrides: [
  {
    files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"],
    rules: {
      'sonarjs/no-duplicate-string': 'off'
    }
  }
]
Sagar Gavhane
quelle