Desactivar la regla eslint para un archivo específico

405

¿Es posible desactivar la regla de eslint para todo el archivo? Algo como:

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

(De forma análoga a eslint-disable-line.) Me sucede con bastante frecuencia que, en un determinado archivo, estoy infringiendo una regla específica en muchos lugares que se considera correcta para ese archivo, pero no quiero desactivar el regla para todo el proyecto ni quiero deshabilitar otras reglas para ese archivo específico.

Tomás Kulich
fuente
1
Puede agregar una regla como la primera línea del archivo de la siguiente manera: / * eslint no-use-before-define: 2 * /
joaumg
2
perfecto, eso funciona, gracias. Acabo de pasar por alto la sección en los documentos: eslint.org/docs/user-guide/configuring.html#configuring-rules
Tomas Kulich

Respuestas:

404

Puede desactivar / cambiar una regla particular para un archivo colocando las configuraciones en la parte superior del archivo.

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

or

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

Más información

Gyandeep
fuente
8
¿Hay alguna manera de poner una regla .eslintrcque haga cumplir todas las reglas específicas del archivo como esta en la parte superior del archivo?
Jeremy
99
@Jeremy ve mi respuesta. Solo necesita agregar un .eslintignorearchivo al directorio raíz de su proyecto.
prograhammer
¿Qué tal un HTML o un archivo ejs, que no parece funcionar .eslintignorey /* eslint no-use-before-define: 0 */ // --> OFFtampoco?
Jeet
¿Es posible realizar múltiples ignoraciones en una línea?
cheshireoctopus
44
Intenté / * eslint-disable rule-name * / y funcionó
Marcos Pereira el
304

Para deshabilitar una regla específica para el archivo:

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

Tenga en cuenta que hay un error en eslint donde el comentario de una sola línea no funcionará:

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

Mira esta publicación

Wahome
fuente
28
Esto deshabilitará todas las reglas de eslint dentro de ese bloque, no solo la que se no-use-before-definepretende ignorar
Jeremy
13
Básicamente esa es toda la idea. La pregunta es "¿Es posible desactivar la regla de eslint para todo el archivo ?"
Wahome
27
@Wahome "¿Es posible desactivar la regla de eslint para todo el archivo?" La palabra regla es singular . Su respuesta desactiva todas las reglas en plural.
spencer.sm
8
en la descripción mencionó que quiere algo así como deshabilitar una regla específica: ¡lea nuevamente la pregunta!
Marwen Trabelsi
55
Es cierto, esto no aborda toda la pregunta, pero sigue siendo una respuesta útil ya que este hilo es un resultado superior cuando buscas en Google "eslint ignore file"
Robin Métral
143

Puede decirle a ESLint que ignore archivos y directorios específicos creando un .eslintignorearchivo en el directorio raíz de su proyecto:

.eslintignore

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

Los patrones de ignorar se comportan de acuerdo con la .gitignoreespecificación. (No olvides reiniciar tu editor).

martillo programador
fuente
10
¿Es posible ignorar solo reglas específicas en este archivo?
J. Hesters
Votaría pero mi respuesta a continuación tiene menos puntaje: D
OZZIE
2
¡Muy agradable! También puede agregar archivos en directorios, subdirectorios, subdirectorios de manera recursiva utilizando **. Por ejemplo: spec/javascripts/**/*.js.
Victor
Perfecto: esto es particularmente útil para archivos que se generan automáticamente y se cambian con frecuencia (como aws-exports.js si está utilizando Amplify o MobileHub de AWS)
bogan27
Esto todavía da una advertencia
dan-klasson
117

También puede deshabilitar / habilitar una regla como esta:

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

Similar a eslint-disable-linelo mencionado en la pregunta. Puede ser un mejor método si no desea tener que restaurar una configuración de regla complicada al volver a habilitarla.

eppsilon
fuente
Prefiero este, porque restaura el nivel (advertencia, error) que he definido en mi configuración de eslint.
Jankapunkt
Esta es la solución que funcionó para mí. Activar y desactivar la regla no funcionó.
JoshJoe
65

Según la cantidad de reglas que desea ignorar (Todas o Algunas) y el alcance de deshabilitarla (Línea (s), Archivo (s), En todas partes), tenemos 2 × 3 = 6 casos.


1) Desactivar "Todas las reglas"

Caso 1.1: Desea deshabilitar "Todas las reglas" para "Una o más líneas"

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

Caso 1.2: Desea deshabilitar "Todas las reglas" para "Un archivo"

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

Caso 1.3: Desea deshabilitar "Todas las reglas" para "Algunos archivos"

Hay 3 formas de hacer esto:

  1. Puede ir con 1.2 y agregar /* eslint-disable */encima de los archivos, uno por uno.
  2. Puede poner los nombres de archivo en .eslintignore. Esto funciona bien especialmente si tiene una ruta que desea ignorar. (por ejemplo apidoc/**)
  3. Alternativamente, si no se quiere tener una separada .eslintignorede archivos, puede añadir "eslintIgnore": ["file1.js", "file2.js"]en package.jsoncomo se indica aquí .

2) Desactivar "Algunas reglas"

Caso 2.1: Desea deshabilitar "Algunas reglas" para "Una o más líneas"

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.

Caso 2.2: Desea deshabilitar "Algunas reglas" para "Un archivo"

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

Más ejemplos aquí .

## Caso 2.3: Desea deshabilitar "Algunas reglas" para "Algunos archivos"

Esto es menos sencillo. Debe ponerlos en el "excludedFiles"objeto de la "overrides"sección de su .eslintrccomo se indica aquí .

Ayuda en
fuente
44
PD. Caso 5: Desea deshabilitar "Todas las reglas" para "Todos los archivos" - npm uninstall eslint! : p
Aidin
2
También tenga en cuenta que solo puede usar /* */comentarios de estilo para eslint-disable. // eslint-disable no-use-before-defineNo va a funcionar. Funciona para // eslint-disable-next-lineaunque.
Aidin
56

Es mejor agregar "anulaciones" en su archivo de configuración .eslintrc.js. Por ejemplo, si no va a deshabilitar la regla camelcase para todos los archivos js que terminan en Acciones, agregue este código después del alcance de las reglas en .eslintrc.js.

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]
Andriy
fuente
No responde la pregunta de OP sobre un archivo específico.
wscourge
Gran alternativa a hacerlo en el archivo.
Josef Engelfrost
8
Respuesta enormemente subestimada!
Adam
¡Funciona genial! En mi humilde opinión, esta debería ser la respuesta aceptada. De esta forma permanece en el archivo eslintrc (mantiene limpios los archivos de origen) y puede anular el comportamiento de reglas específicas para archivos específicos. +1
akagixxer
48

Para deshabilitar temporalmente las advertencias de reglas en su archivo, use los comentarios de bloque en el siguiente formato:

/* eslint-disable */

Esto deshabilitará ESLint hasta que

/* eslint-enable */

Se alcanza el comentario.

Puedes leer más sobre este tema aquí .

samuel luswata
fuente
36

La respuesta aceptada no funcionó para mí (¿quizás una versión diferente de eslint ...? Estoy usando eslint v3.19.0), pero encontré una solución con lo siguiente ...

Coloque lo siguiente en la parte superior de su archivo

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

Esto deshabilitará la regla para todo el archivo

sfletche
fuente
77
... o múltiples, como/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Frank Nocke
1
Lo mismo, la respuesta aceptada no funcionó para mí. Dos diferencias: Cambiar eslinta eslint-disabley soltar : 0. Usando [email protected].
hellatan
10
/*eslint-disable */

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

/*eslint-enable */

funciono para mi

Shakil
fuente
44
Esto deshabilitará todas las reglas de eslint dentro de ese bloque, no solo la que se no-use-before-definepretende ignorar
Jeremy
Esto me ayudó, gracias! También considere esta respuesta a la pregunta, deshabilitar todas las reglas también deshabilita la regla prevista
Fabiano Soriani
7

Puede poner esto, por ejemplo, en la parte superior del archivo:

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

Puede desactivar una regla específica para un archivo utilizando /*eslint [<rule: "off"], >]*/

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

Versión: [email protected]

Mahesh
fuente
Esto funcionó perfectamente bien en caso de que uno necesite deshabilitar una regla solo para un archivo completo.
Umakant Patil
0

puede configurar la propiedad de anulación de eslint para desactivar reglas específicas en archivos que coincidan con el patrón global como se muestra a continuación.

Aquí, quiero desactivar la no-duplicate-stringregla para probar todos los archivos.

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