Désactiver la règle eslint pour un fichier spécifique

405

Est-il possible de désactiver la règle eslint pour tout le fichier? Quelque chose comme:

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

(Analogue à eslint-disable-line.) Il m'arrive assez souvent que dans un certain fichier, j'enfreins une règle spécifique à de nombreux endroits qui est considérée comme OK pour ce fichier, mais je ne veux pas désactiver le règle pour l'ensemble du projet et je ne veux pas désactiver d'autres règles pour ce fichier spécifique.

Tomas Kulich
la source
1
Vous pouvez ajouter une règle comme première ligne du fichier comme suit: / * eslint no-use-before-define: 2 * /
joaumg
2
parfait, ça marche, merci. J'ai juste oublié la section dans les documents: eslint.org/docs/user-guide/configuring.html#configuring-rules
Tomas Kulich

Réponses:

404

Vous pouvez désactiver / modifier une règle particulière pour un fichier en plaçant les configurations en haut du fichier.

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

or

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

Plus d'informations

Gyandeep
la source
8
Existe-t-il un moyen de mettre une règle .eslintrcqui applique toutes les règles spécifiques au fichier comme celle-ci en haut du fichier?
Jeremy
9
@Jeremy voir ma réponse. Il vous suffit d'ajouter un .eslintignorefichier au répertoire racine de votre projet.
prograhammer
Que diriez-vous d'un fichier html ou ejs, qui ne semble pas fonctionner .eslintignoreet /* eslint no-use-before-define: 0 */ // --> OFFnon plus?
Jeet
Est-il possible d'effectuer plusieurs ignorés sur une seule ligne?
cheshireoctopus
4
J'ai essayé / * eslint-disable rule-name * / et cela a fonctionné
Marcos Pereira
304

Pour désactiver une règle spécifique pour le fichier:

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

Notez qu'il y a un bogue dans eslint où le commentaire sur une seule ligne ne fonctionnera pas -

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

Consultez ce post

Wahome
la source
28
Cela désactivera toutes les règles d'eslint dans ce bloc, pas seulement celle no-use-before-definedestinée à ignorer
Jeremy
13
Fondamentalement, c'est l'idée globale. La question est "Est-il possible de désactiver la règle eslint pour tout le fichier ?"
Wahome
27
@Wahome "Est-il possible de désactiver la règle eslint pour tout le fichier?" Le mot règle est singulier . Votre réponse désactive toutes les règles au pluriel.
spencer.sm
8
dans la description, il a mentionné qu'il voulait quelque chose comme désactiver une règle spécifique - relisez la question!
Marwen Trabelsi
5
C'est vrai, cela ne répond pas à toute la question, mais c'est toujours une réponse utile car ce fil est un résultat de premier plan lors de la recherche sur "eslint ignore file"
Robin Métral
143

Vous pouvez dire à ESLint d' ignorer des fichiers et des répertoires spécifiques en créant un .eslintignorefichier dans le répertoire racine de votre projet:

.eslintignore

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

Les motifs ignorés se comportent conformément à la .gitignorespécification. (N'oubliez pas de redémarrer votre éditeur.)

prograhammer
la source
10
Est-il possible d'ignorer uniquement des règles spécifiques dans ce fichier?
J. Hesters
Je voterais de façon positive mais ma réponse ci-dessous a moins de points: D
OZZIE
2
Très agréable! Vous pouvez également ajouter des fichiers dans des répertoires, sous-répertoires, sous-répertoires de manière récursive en utilisant **. Par exemple: spec/javascripts/**/*.js.
Victor
Parfait - Ceci est particulièrement utile pour les fichiers qui sont générés automatiquement et modifiés fréquemment (comme aws-exports.js si vous utilisez AWS Amplify ou MobileHub)
bogan27
Cela donne toujours un avertissement
dan-klasson
117

Vous pouvez également désactiver / activer une règle comme celle-ci:

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

Similaire à eslint-disable-linecelui mentionné dans la question. Ce pourrait être une meilleure méthode si vous ne voulez pas avoir à restaurer une configuration de règle compliquée lors de sa réactivation.

eppsilon
la source
Je préfère celui-ci, car il restaure le niveau (avertissement, erreur) que j'ai défini dans ma configuration eslint.
Jankapunkt
C'est la solution qui a fonctionné pour moi. Désactiver et activer la règle n'a pas fonctionné.
JoshJoe
65

En fonction du nombre de règles que vous souhaitez ignorer (Toutes ou Certaines) et de l'étendue de leur désactivation (Ligne (s), Fichier (s), Partout), nous avons 2 × 3 = 6 cas.


1) Désactiver "Toutes les règles"

Cas 1.1: vous souhaitez désactiver "Toutes les règles" pour "Une ou plusieurs lignes"

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

Cas 1.2: vous souhaitez désactiver "Toutes les règles" pour "Un fichier"

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

Cas 1.3: vous souhaitez désactiver "Toutes les règles" pour "Certains fichiers"

Vous pouvez procéder de trois manières:

  1. Vous pouvez aller avec 1.2 et ajouter /* eslint-disable */au-dessus des fichiers, un par un.
  2. Vous pouvez mettre le (s) nom (s) de fichier dans .eslintignore. Cela fonctionne bien, surtout si vous avez un chemin que vous souhaitez ignorer. (par exemple apidoc/**)
  3. Sinon, si vous ne voulez pas avoir un séparé .eslintignorefichier, vous pouvez ajouter "eslintIgnore": ["file1.js", "file2.js"]en suivant les package.jsoninstructions ici .

2) Désactiver "Certaines règles"

Cas 2.1: vous souhaitez désactiver "Certaines règles" pour "Une ou plusieurs lignes"

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.

Cas 2.2: vous souhaitez désactiver "Certaines règles" pour "Un fichier"

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

Plus d'exemples ici .

## Cas 2.3: Vous souhaitez désactiver "Certaines règles" pour "Certains fichiers"

C'est moins simple. Vous devez les mettre en "excludedFiles"objet de "overrides"section de votre .eslintrccomme indiqué ici .

Aide à
la source
4
PS. Cas 5: Vous souhaitez désactiver "Toutes les règles" pour "Tous les fichiers" - npm uninstall eslint! : p
Aidin
2
Notez également que vous ne pouvez utiliser que /* */ commentaires de style pour eslint-disable. // eslint-disable no-use-before-definene va pas fonctionner. Cela fonctionne // eslint-disable-next-linebien.
Aidin
56

Il est préférable d'ajouter des "remplacements" dans votre fichier de configuration .eslintrc.js. Par exemple, si vous ne souhaitez pas désactiver la règle camelcase pour tous les fichiers js se terminant par Actions, ajoutez ce code après la portée des règles dans .eslintrc.js.

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]
Andriy
la source
Il ne répond pas à la question d'OP concernant un fichier spécifique.
wscourge
Excellente alternative à le faire en fichier.
Josef Engelfrost
8
Réponse énormément sous-estimée!
Adam
Fonctionne très bien! À mon humble avis, cela devrait être la réponse acceptée. Cette méthode reste dans le fichier eslintrc (garde les fichiers source propres) et peut remplacer le comportement de règles spécifiques pour des fichiers spécifiques. +1
akagixxer
48

Pour désactiver temporairement les avertissements de règle dans votre fichier, utilisez les commentaires de bloc au format suivant:

/* eslint-disable */

Cela désactivera ESLint jusqu'à ce que le

/* eslint-enable */

le commentaire est atteint.

Vous pouvez en savoir plus sur ce sujet ici .

samuel luswata
la source
36

La réponse acceptée n'a pas fonctionné pour moi (peut-être une version différente d'eslint ...? J'utilise eslint v3.19.0 ), mais a trouvé une solution avec ce qui suit ...

Placez ce qui suit en haut de votre fichier

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

Cela désactivera la règle pour l'ensemble du fichier

sfletche
la source
7
... ou multiple, comme/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Frank Nocke
1
la même chose, la réponse acceptée n'a pas fonctionné pour moi. Deux différences: changement eslintà eslint-disableet les chutes : 0. Utilisation de [email protected].
hellatan
10
/*eslint-disable */

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

/*eslint-enable */

ça a marché pour moi

Shakil
la source
4
Cela désactivera toutes les règles d'eslint dans ce bloc, pas seulement celle no-use-before-definedestinée à ignorer
Jeremy
Cela m'a aidé, merci! Considérez également cette réponse à la question, la désactivation de toutes les règles désactive également la règle prévue
Fabiano Soriani
7

Vous pouvez simplement mettre ceci par exemple en haut du fichier:

/* eslint-disable no-console */
OZZIE
la source
1

Vous pouvez désactiver une règle spécifique pour un fichier en utilisant /*eslint [<rule: "off"], >]*/

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

Version: [email protected]

Mahesh
la source
Cela a parfaitement fonctionné au cas où l'on aurait besoin de désactiver une règle uniquement pour un fichier complet.
Umakant Patil
0

vous pouvez configurer la propriété eslint overrides pour désactiver des règles spécifiques sur les fichiers qui correspondent au modèle glob comme ci-dessous.

Ici, je veux désactiver la no-duplicate-stringrègle pour tester tous les fichiers.

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