# eslint-plugin-prefer-arrow ESLint plugin to prefer arrow functions. By default, the plugin allows usage of `function` as a member of an Object's prototype, but this can be changed with the property `disallowPrototype`. Functions referencing `this` will also be allowed. Alternatively, with the `singleReturnOnly` option, this plugin only reports functions where converting to an arrow function would dramatically simplify the code. Class methods will not produce errors unless the `classPropertiesAllowed` flag is set. This plugin will automatically fix your code using ESLint's `--fix` option, as long as you use the `singleReturnOnly` option. # Installation Install the npm package ```bash # If eslint is installed globally npm install -g eslint-plugin-prefer-arrow # If eslint is installed locally npm install -D eslint-plugin-prefer-arrow ``` Add the plugin to the `plugins` section and the rule to the `rules` section in your .eslintrc ```js "plugins": [ "prefer-arrow" ], "rules": [ "prefer-arrow/prefer-arrow-functions": [ "warn", { "disallowPrototype": true, "singleReturnOnly": false, "classPropertiesAllowed": false } ] ] ``` # Configuration * `disallowPrototype`: If set to true, the plugin will warn if `function` is used anytime. Otherwise, the plugin allows usage of `function` if it is a member of an Object's prototype. * `singleReturnOnly`: If set to true, the plugin will only warn for `function` declarations which *only* contain a return statement. These often look much better when declared as arrow functions without braces. Works well in conjunction with ESLint's built-in [arrow-body-style](http://eslint.org/docs/rules/arrow-body-style) set to `as-needed`. * `classPropertiesAllowed`: If set to true, the plugin will warn about functions which could be replaced with arrow functions defined as [class instance fields](https://github.com/jeffmo/es-class-static-properties-and-fields). Enable if you're using Babel's [transform-class-properties](https://babeljs.io/docs/plugins/transform-class-properties/) plugin. * `allowStandaloneDeclarations`: If set to true, the plugin will ignore top-level function declarations (the plugin will still warn about "inner" functions, for example, function declarations inside other functions). # Autofixing To autofix your code, simply run ESLint with the `--fix` option. Note that this only works when the `singleReturnOnly` option is set to true. ```bash eslint --fix src ```