Tomas Kulich
Tomas Kulich

Reputation: 15658

Turning off eslint rule for a specific file

Is it possible to turn off the eslint rule for the whole file? Something such as:

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

(Analogous to eslint-disable-line.) It happens to me quite often, that in a certain file, I'm breaking a specific rule on many places which is considered OK for that file, but I don't want to disable the rule for the whole project nor do I want to disable other rules for that specific file.

Upvotes: 830

Views: 796645

Answers (19)

Andriy
Andriy

Reputation: 2111

It's better to add "overrides" in your .eslintrc.js config file. For example, if you want to disable camelcase rule for all js files ending on Actions, add this code after rules scope in .eslintrc.js.

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]

Upvotes: 131

Aidin
Aidin

Reputation: 30077

Let's have a breakdown of the scenarios. Here are two questions to ask yourself, first.

  • How many rules do you want to ignore?

    1. All rules
    2. One or more specific rules (e.g. quotes or semi)
  • How many lines/files do you want to ignore?

    1. One or more lines
    2. All lines in one or more files
    3. Everywhere

Now, based on the your answers, there are 2 × 3 = 6 cases.

  • Case 1.1: You want to disable all rules for one or more lines.

    There are two ways you can do this:

    1. put /* eslint-disable-line */ at the end of the line(s); or
    2. put /* eslint-disable-next-line */ right before the line(s).
  • Case 1.2: You want to disable all rules for one file.

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

  • Case 1.3: You want to disable all rules for some files.

    There are 3 ways you can do this:

    1. You can go with 1.2 and add /* eslint-disable */ on top of the files, one by one.
    2. You can put the file name(s) in .eslintignore. This works well, especially if you have a path that you want to be ignored. (e.g. apidoc/**)
    3. Alternatively, if you don't want to have a separate .eslintignore file, you can add "eslintIgnore": ["file1.js", "file2.js"] in package.json as instructed here.
  • Case 2.1: You want to disable some rules for one or more lines.

    Two ways you can do this, you can put:

    1. /* eslint-disable-line quotes */ (replace quotes with your rules) at the end of the line(s); or

    2. /* eslint-disable-next-line no-alert, quotes, semi */ before the line.

    Pro Tip: if you have multiple lines that you want to ignore the same rule(s) for, you can disable and enable the rules like this:

    // Assume these lines are long engouh that max-len is gonna trigger
    
    /* eslint-disable max-len */
    console.log("I am a loooooooooo...ooooong line 1, but eslint doesn't bug!");
    console.log("I am a loooooooooo...ooooong line 2, but eslint doesn't bug!");
    console.log("I am a loooooooooo...ooooong line 3, but eslint doesn't bug!");
    /* eslint-enable max-len */
    console.log("I am a loooooooooo...ooooong line 4, AND eslint's GONNA CRY!"); // <--- eslint is gonna cry over this one only!
    
  • Case 2.2: You want to disable some rules for one file.

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

  • Case 2.3: You want to disable some rules for some files.

    This is less straightforward. You should create an "overrides" section in your .eslintrc and specify which rules should be disabled/modified for which globs/files. An example can be found in this answer.

Upvotes: 456

Druv
Druv

Reputation: 251

Just add this to the top of your file. This disables all eslint warnings respectively.

/* eslint-disable */

Upvotes: 21

Swapnil Shingare
Swapnil Shingare

Reputation: 9

To temporarily disable rule warnings in your file, use block comments in the following format:

/* eslint-disable */

alert('foo');

/* eslint-enable */ You can also disable or enable warnings for specific rules:

/* eslint-disable no-alert, no-console */

alert('foo'); console.log('bar');

/* eslint-enable no-alert, no-console / To disable rule warnings in an entire file, put a / eslint-disable */ block comment at the top of the file:

/* eslint-disable */

alert('foo'); You can also disable or enable specific rules for an entire file:

/* eslint-disable no-alert */

alert('foo'); To disable all rules on a specific line, use a line comment in one of the following formats:

Following are some examples to disable ESLint for a page

alert('foo'); // eslint-disable-line

// eslint-disable-next-line alert('foo'); To disable a specific rule on a specific line:

alert('foo'); // eslint-disable-line no-alert

// eslint-disable-next-line no-alert alert('foo'); To disable multiple rules on a specific line:

alert('foo'); // eslint-disable-line no-alert, quotes, semi

// eslint-disable-next-line no-alert, quotes, semi alert('foo');


Do following steps to disable ESLint from your project

  • open package.config file in your project.
  • remove all dependencies related to ESLint.
  • remove eslint.js/eslintconfig files from your project
  • run command npm install
  • now run your project

Upvotes: -1

Muhammed Moussa
Muhammed Moussa

Reputation: 5195

If you want to disable ESLint for one rule, you can add this to the top of the file:

/* eslint-disable NAME_OF_THE_RULE */

If you want to disable ESLint or TypeScript checks inside a file, you can add these lines at the top of the file. The first one will disable TypeScript checks, and the second one ESLint checks.

// @ts-nocheck
/* eslint-disable */

Upvotes: 18

fjplaurr
fjplaurr

Reputation: 1950

Simple and effective.

Eslint 6.7.0 brought "ignorePatterns" to write it in .eslintrc.json like this example:

{
    "ignorePatterns": ["fileToBeIgnored.js"],
    "rules": {
        //...
    }
}

See docs

Upvotes: 17

Victor Cordeiro Costa
Victor Cordeiro Costa

Reputation: 2194

To disable specific rules for file(s) inside folder(s), you need to use the "overrides" key of your .eslintrc config file.

For example, if you want to remove the following rules:

  1. no-use-before-define
  2. max-lines-per-function

For all files inside the following main directory:

/spec

You can add this to your .eslintrc file...

"overrides": [
  {
    "files": ["spec/**/*.js"],
    "rules": {
      "no-use-before-define": ["off"],
      "max-lines-per-function": ["off"]
    }
  }
]

Note that I used ** inside the spec/**/*.js glob, which means I am looking recursively for all subfolders inside the folder called spec and selecting all files that ends with js in order to remove the desired rules from them.

Upvotes: 83

Shakil Ahmed
Shakil Ahmed

Reputation: 1521

/* eslint-disable */

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

/* eslint-enable */

This will disable all eslint rules within the block.

Upvotes: 33

Napster Scofield
Napster Scofield

Reputation: 1289

Simply create an empty file .eslintignore in your project root the type the path to the file you want it to be ignore.

Source: https://eslint.org/docs/2.13.1/user-guide/configuring#:~:text=To%20disable%20rule%20warnings%20in,*%2F%20alert('foo')%3B

Line Ignoring Files and Directories

Upvotes: 1

Javi Marz&#225;n
Javi Marz&#225;n

Reputation: 1340

As of today, the answer does not work for me, but putting this at the top of the file does work:

/* eslint-disable @typescript-eslint/no-unused-vars */

It is important to know that at least in my case, the type of comment makes a difference. The previous comment works for me, but the following won't work:

// eslint-disable @typescript-eslint/no-unused-vars

Upvotes: 8

Wahome
Wahome

Reputation: 6419

To disable a specific rule for the file:

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

Note there is a bug in eslint where single line comment will not work -

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

Check this post

Upvotes: 607

Sagar
Sagar

Reputation: 4957

you can configure eslint overrides property to turn off specific rules on files which matches glob pattern like below.

Here, I want to turn off the no-duplicate-string rule for tests all files.

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

Upvotes: 9

Gyandeep
Gyandeep

Reputation: 13558

You can turn off/change a particular rule for a file by putting the configurations at the top of the file.

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

or

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

More info

Upvotes: 636

OZZIE
OZZIE

Reputation: 7378

You can just put this for example at the top of the file:

/* eslint-disable no-console */

Upvotes: 8

Mahesh
Mahesh

Reputation: 3997

You can turn off specific rule for a file by using /*eslint [<rule: "off"], >]*/

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

Version: eslint@4.3.0

Upvotes: 1

samuel luswata
samuel luswata

Reputation: 866

To temporarily disable rule warnings in your file, use block comments in the following format:

/* eslint-disable */

This will disable ESLint until the

/* eslint-enable */

comment is reached.

You can read more about this topic here.

Upvotes: 76

prograhammer
prograhammer

Reputation: 20620

You can tell ESLint to ignore specific files and directories by creating an .eslintignore file in your project’s root directory:

.eslintignore

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

The ignore patterns behave according to the .gitignore specification. (Don't forget to restart your editor.)

Upvotes: 251

sfletche
sfletche

Reputation: 49744

Accepted answer didn't work for me (maybe a different version of eslint...? I'm using eslint v3.19.0), but did find a solution with the following...

Place the following on the top of your file

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

This will disable the rule for the entire file

Upvotes: 37

eppsilon
eppsilon

Reputation: 2081

You can also disable/enable a rule like this:

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

Similar to eslint-disable-line as mentioned in the question. It might be a better method if you don't want to have to restore a complicated rule configuration when re-enabling it.

Upvotes: 140

Related Questions