Convert functions to arrow functions
npm install eslint-plugin-prefer-arrow-functions> 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, or new.target for example).
``bash`
npm install --save-dev eslint eslint-plugin-prefer-arrow-functions
For ESLint 9 and above, use the shared config all in eslint.config.mjs:
`js
import pluginJs from '@eslint/js';
import preferArrowFunctions from 'eslint-plugin-prefer-arrow-functions';
export default [
pluginJs.configs.all,
preferArrowFunctions.configs.all,
];
`
Or configure the rule(s) on your own:
`js
import pluginJs from '@eslint/js';
import preferArrowFunctions from 'eslint-plugin-prefer-arrow-functions';
export default [
pluginJs.configs.all,
{
plugins: {
'prefer-arrow-functions': preferArrowFunctions
},
rules: {
'prefer-arrow-functions/prefer-arrow-functions': [
'warn',
{
allowedNames: [],
allowNamedFunctions: false,
allowObjectProperties: false,
classPropertiesAllowed: false,
disallowPrototype: false,
returnStyle: 'unchanged',
singleReturnOnly: false,
},
],
},
},
];
`
For ESLint 8 and below.
Add 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.
`json`
{
"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.
Controls how named functions are handled:
- When true, the rule won't report any named functions such as function foo() {}. Anonymous functions such asconst foo = function() {}
will still be reported."only-expressions"
- When , the rule will allow named function expressions (like callback(function namedFn() {})) butfunction foo() {}
will still transform named function declarations (like ).false
- When (default), all functions will be transformed to arrow functions when safe to do so.
If set to true, the rule won't report named methods such as
`js`
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 as x => { return x; } will be converted to x => x."explicit"
- When , arrow functions such as x => x will be converted to x => { return x; }."unchanged"
- When 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
Triston Jones.
- 
- 
- 
- 