Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/u3u/eslint-plugin-arrow-return-style
Enforce arrow function return style and automatically fix it
https://github.com/u3u/eslint-plugin-arrow-return-style
arrow-functions eslint eslint-plugin
Last synced: 27 days ago
JSON representation
Enforce arrow function return style and automatically fix it
- Host: GitHub
- URL: https://github.com/u3u/eslint-plugin-arrow-return-style
- Owner: u3u
- License: mit
- Created: 2023-08-07T15:45:43.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-28T22:31:13.000Z (about 1 month ago)
- Last Synced: 2024-09-29T01:04:56.714Z (about 1 month ago)
- Topics: arrow-functions, eslint, eslint-plugin
- Language: TypeScript
- Homepage:
- Size: 981 KB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# eslint-plugin-arrow-return-style
> Enforce arrow function return style and automatically fix it
[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![codecov][codecov-src]][codecov-href]
[![License][license-src]][license-href]## Features
> This rule serves as an alternative to the [`arrow-body-style`](https://eslint.org/docs/latest/rules/arrow-body-style#as-needed) with `as-needed` options, used to improve the style of arrow function return statement.
- When arrow function expressions are multiline or exceed a certain length, explicit return should be enforced to improve readability and extensibility.
- When an arrow function has only one return statement (and does not contain any comments), implicit return should be used to simplify the code and improve readability.
- When using arrow functions as named exports, explicit return should always be used to maintain consistency with regular functions.
- When using arrow functions as React components, always use explicit return to facilitate the addition of `props` and `hooks` in the future.## Install
```sh
pnpm add eslint-plugin-arrow-return-style -D
```## Usage
```js
/** @type {import('eslint').Linter.Config} */
module.exports = {
extends: ['plugin:arrow-return-style/recommended'],
};
```## Examples
### Fail
```tsx
/* eslint-disable arrow-return-style/arrow-return-style */const delay = () =>
new Promise((resolve) => {
setTimeout(resolve, 1000);
});const foo = () => {
return 'foo';
};Array.from({ length: 10 }).map((_, i) => {
return i + 1;
});const obj = () => {
return { name: '' };
};const data = () => ({
name: '',
});export const defineConfig = (config: T) => config;
const fn = () => /* block comment */ 1;
const Div = () => (
<>
>
);
```### Pass
```tsx
const delay = () => {
return new Promise((resolve) => {
setTimeout(resolve, 1000);
});
};const foo = () => 'foo';
const obj = () => ({ name: '' });
Array.from({ length: 10 }).map((_, i) => i + 1);
const data = () => {
return {
name: '',
};
};export const defineConfig = (config: T) => {
return config;
};const fn = () => {
/* block comment */
return 1;
};const Div = () => {
return (
<>
>
);
};
```## Options
### `maxLen`
Type: `number`\
Default: `80`If the arrow function expression exceeds `maxLen` characters, it is forced to use explicit return.
### `jsxAlwaysUseExplicitReturn`
Type: `boolean`\
Default: `false`If set `true`, always use explicit return when return value is `JSXElement` or `JSXFragment`.
### `namedExportsAlwaysUseExplicitReturn`
Type: `boolean`\
Default: `true`By default, named exported arrow functions will always use explicit return to maintain consistency with regular functions because it is more intuitive and unified, and convenient for expansion.
## Rules
⚠️ Configurations set to warn in.\
✅ Set in the `recommended` configuration.\
🔧 Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).| Name | Description | ⚠️ | 🔧 |
| :--------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- | :- | :- |
| [arrow-return-style](docs/rules/arrow-return-style.md) | Enforce arrow function return style | ✅ | 🔧 |
| [no-export-default-arrow](docs/rules/no-export-default-arrow.md) | Disallow export default anonymous arrow function
_**Automatically fix using the current file name.**_ | ✅ | 🔧 |## License
[MIT](./LICENSE) License © 2023 [u3u](https://github.com/u3u)
[npm-version-src]: https://img.shields.io/npm/v/eslint-plugin-arrow-return-style
[npm-version-href]: https://npmjs.com/package/eslint-plugin-arrow-return-style
[npm-downloads-src]: https://img.shields.io/npm/dm/eslint-plugin-arrow-return-style
[npm-downloads-href]: https://npmjs.com/package/eslint-plugin-arrow-return-style
[codecov-src]: https://codecov.io/gh/u3u/eslint-plugin-arrow-return-style/graph/badge.svg
[codecov-href]: https://codecov.io/gh/u3u/eslint-plugin-arrow-return-style
[license-src]: https://img.shields.io/github/license/u3u/eslint-plugin-arrow-return-style.svg
[license-href]: ./LICENSE