An ESLint Plugin to Lint and auto-fix plain Functions into Arrow Functions, in all cases where conversion would result in the same behaviour (Arrow Functions do not support
this,arguments, ornew.targetfor example).
npm install --save-dev eslint eslint-plugin-prefer-arrow-functionsAdd the plugin to the plugins section and the rule to the rules section in your .eslintrc. The default values for options are listed in this example.
{
"plugins": ["prefer-arrow-functions"],
"rules": {
"prefer-arrow-functions/prefer-arrow-functions": [
"warn",
{
"allowedNames": [],
"allowNamedFunctions": false,
"allowObjectProperties": false,
"classPropertiesAllowed": false,
"disallowPrototype": false,
"returnStyle": "unchanged",
"singleReturnOnly": false
}
]
}
}An optional array of function names to ignore. When set, the rule won't report named functions such as function foo() {} whose name is identical to a member of this array.
If set to true, the rule won't report named functions such as function foo() {}. Anonymous function such as const foo = function() {} will still be reported.
If set to true, the rule won't report named methods such as
const myObj = {
hello() {}
}When true, functions defined as class instance fields will be converted to arrow functions when doing so would not alter or break their behaviour.
When true, functions assigned to a prototype will be converted to arrow functions when doing so would not alter or break their behaviour.
- When
"implicit", arrow functions such asx => { return x; }will be converted tox => x. - When
"explicit", arrow functions such asx => xwill be converted tox => { return x; }. - When
"unchanged"or not set, arrow functions will be left as they were.
When true, only function declarations which only contain a return statement will be converted. Functions containing block statements will be ignored.
This option works well in conjunction with ESLint's built-in arrow-body-style set to
as-needed.
This project is a fork of https://github.com/TristonJ/eslint-plugin-prefer-arrow by Triston Jones.