npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

eslint-plugin-disable

v2.0.3

Published

Disable ESLint plugins using file patterns and inline comments

Downloads

75,038

Readme

eslint-plugin-disable Build status

Disable ESLint plugins using file path patterns and inline comments

..which means all disabled plugins' errors and warnings won't appear in ESLint report.

  • Example: inline comments:

    /* eslint-plugin-disable react */
    
    function greet(name) {
      console.log('Hi, ' + name);
    }
  • Example: file path patterns (.eslintrc):

    {
      "plugins": ["react", "disable"],
      "processor": "disable/disable",
      "overrides": [
        {
          "files": ["tests/**/*.test.js"],
          "settings": {
            "disable/plugins": ["react"]
          }
        }
      ]
    }

Install

npm install eslint-plugin-disable --save-dev

Use

Add plugin to a config file (.eslintrc) and make it default processor:

{
  "plugins": ["disable"],
  "processor": "disable/disable"
}

Inline comments

Regular disable

Plugin adds a custom directive to use in files in a form of inline comment, which allows to disable entire plugins for this file. Plugin names have to be the same as in ESLint config file, separated by comma.

The following directive will disable "react" and "jsx-a11y" plugins for this particular file.

/* eslint-plugin-disable react, jsx-a11y */

function greet(name) {
  console.log('Hi, ' + name);
}

If no any plugins provided - all plugins registered in ESLint config will be disabled:

/* eslint-plugin-disable */

function greet(name) {
  console.log('Hi, ' + name);
}
Disable all except

Another custom option allows to disable all plugins except ones that are specified. It might be useful when there are a lot of plugins in the project and it is required to use one or two of them for particular files, usage of regular disable syntax might be cumbersome to maintain if there are plans to add new plugins to the project. Plugin names have to be the same as in ESLint config file, separated by comma.

The following directive will disable all plugins registered in ESLint config except "react" and "jsx-a11y".

/* eslint-plugin-disable-all-except react, jsx-a11y */

function greet(name) {
  console.log('Hi, ' + name);
}

Notes:

  • disable all except: if no plugins specified, then none of the plugins listed in ESLint config will be disabled i.e. error messages will not be removed from ESLint report
  • all target files must have a "disable/disable" processor enabled for them, including usage of ESLint 6 Overrides
  • whitespace inside block comment is ignored
  • original file is not modified
  • there is no way to restore behavior with another inline option

File paths

Regular disable

To disable plugins for file paths use new ESLint 6+ Overrides feature in config (.eslintrc). It has many different configurations for glob path patterns, ignore patterns and it basically creates a nested config for a list of files (ESLint docs for more info). This list of files should be assigned with a "disable/disable" processor in order for plugin to work. You can have multiple "overrides" entries with different paths and different plugins to disable.

The following config will:

  • disable "import" and "jsx-a11y" plugins for all files matching "tests/**/*.test.js" glob pattern
  • disable "react" plugin for all files matching "lib/*.js" glob pattern
{
  "plugins": ["import", "react", "jsx-a11y", "disable"],
  "processor": "disable/disable",
  "overrides": [
    {
      "files": ["tests/**/*.test.js"],
      "settings": {
        "disable/plugins": ["import", "jsx-a11y"]
      }
    },
    {
      "files": ["lib/*.js"],
      "settings": {
        "disable/plugins": ["react"]
      }
    }
  ]
}

To disable all registered plugins you can simply omit "disable/plugins" setting or use a star in place of plugin name:

{
  "plugins": ["import", "react", "jsx-a11y", "disable"],
  "processor": "disable/disable",
  "overrides": [
    {
      "files": ["tests/**/*.test.js"],
      "settings": {
        "disable/plugins": "*"
      }
    }
  ]
}
Disable all except

To disable all plugins except specified ones use "disableAllExcept" flag in config settings (.eslintrc).

The following config will disable all registered plugins except "react" for all files mathing "tests/**/*.test.js" glob pattern ("import" and "jsx-a11y" will be disabled).

{
  "plugins": ["import", "react", "jsx-a11y", "disable"],
  "processor": "disable/disable",
  "overrides": [
    {
      "files": ["tests/**/*.test.js"],
      "settings": {
        "disable/disableAllExcept": true,
        "disable/plugins": ["react"]
      }
    }
  ]
}

Conflicts with other plugins

Some ESLint plugins also use processors, which creates a conflict with this plugin, because ESLint does not allow to chain processors for the same source files without processing it and producing another files. There is a setting "externalProcessor", which accepts a processor identifier "pluginName/processorName" and makes this plugin to call other plugin's processor before disabling the rules.

One of the cases is "eslint-plugin-vue":

{
  "plugins": ["vue", "disable"],
  "processor": "disable/disable",
  "settings": {
    "disable/plugins": ["vue"],
    "disable/externalProcessor": "vue/.vue"
  }
}

As a plugin might export multiple processors, the only way to find out what "processorName" to use, is to browse plugin's sources. If you don't know it, then you can just skip "processorName" in identifier and only leave "pluginName" - this way the first available processor will be auto-picked.

{
  "plugins": ["vue", "disable"],
  "processor": "disable/disable",
  "settings": {
    "disable/plugins": ["vue"],
    "disable/externalProcessor": "vue"
  }
}

Option precedence

All the options are not merged together, there is a strict order in which they apply:

  1. Inline comment to disable all plugins except specified (docs)
  2. Inline comment to disable specified plugins (docs)
  3. Settings paths to disable all plugins except specified (docs)
  4. Settings paths to disable specified plugins (docs)

If first option applies, then only plugins mentioned in this option will be used to disable, the rest of the options down the list will be ignored. If first and second options do not apply (no inline comments in file), but third option does apply, then only plugins mentioned in third option will be used to disable, the rest will be ignored.

Support

| eslint | eslint-plugin-disable | | ---------------- | --------------------- | | >= 0.16.0 <6.0.0 | <=1.0.5 | | >=6.0.0 | >=2.0.0 |

Migrating

Origin

Unfortunately this feature is not natively supported in ESLint yet, so this module may become a temporary workaround. Read the following issues for additional information: