Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including eslint-plugin-no-methods with all npm packages installed. Try it out:

var eslintPluginNoMethods = require("eslint-plugin-no-methods")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

eslint-plugin-no-methods v1.0.5

Disallow using the some methods in your configuration

eslint-plugin-no-methods

Disallow using the method methods

version  Build Status  GitHub issues  license

Installation

You'll first need to install ESLint:

$ npm i eslint --save-dev

Next, install eslint-plugin-no-methods:

$ npm install eslint-plugin-no-methods --save-dev

Note: If you installed ESLint globally (using the -g flag) then you must also install eslint-plugin-no-methods globally.

Usage

Add no-methods to the plugins section of your .eslintrc configuration file. You can omit the eslint-plugin- prefix:

{
    "plugins": [
        "no-methods"
    ]
}

Then configure the rules you want to use under the rules section.

{
  "rules": {
    "no-methods/no-includes": [
      "error", 
      {
        "ignore": ["_", "lodash", "underscore"], 
        "errMsg": "Except for _.includes, Array|String.includes is not supported!"
      }
    ],
    "no-methods/no-entries": [
      "error", 
      {"limit": ["Object"], "errMsg": "Object.entries is not supported!"}
    ],
    "no-methods/no-assign": [
      "error", 
      {"limit": ["Object"], "errMsg": "Object.assign is not supported!"}
    ],
    "no-methods/no-methods": [
      "error", 
      {
        "methods": [
          {
            "name": "method0", 
            "ignore": ["ignoreCallerName"], 
            "errMsg": "Except for ignoreCallerName.method0, method0 is not supported!"
          },
          {
            "name": "method1", 
            "ignore": ["ignoreCallerName"], 
            "errMsg": "Except for ignoreCallerName.method1, method1 is not supported!"
          },
          {
            "name": "method2", 
            "limit": ["myObj"], 
            "errMsg": "Only myObj.method2 is not supported!"
          }
        ]
      }
    ]
  }
}

ignore: none was allowed but some in ignores

limit: only some limits were disallowed, and others were allowed

You can use only one of ignore and limit in configuration.

Build-in rules

See build-in rules in doc/build-in.md

Attention

The function call expression like methodName.call(ctx, args), wasnot resolved in eslint-plugin-no-method.

The reason why plugin doesnt provide support (resolve this invoke way) is that you can always find a way to avoid this limitation。 such as

let a = {
    doSth(...args){
        console.log(args);
        //...
    }
};

let diyInvoke = (obj, methodName, ctx, ...args) => obj[methodName].apply(ctx, args);

diyInvoke(a, 'doSth', this, 1, 2, 3); 
// Correct! Even if u`ve configured 'forbidden a.doSth()' in eslint-plugin-no-methods  

Created by yeoman tool.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free