Disallow using the method methods
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.
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 somelimits
were disallowed, and others were allowed
You can use only one of
ignore
andlimit
in configuration.
See build-in rules in doc/build-in.md
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.