UNPKG

eslint-plugin-arrow-return-style-x

Version:
166 lines (120 loc) 5.16 kB
# eslint-plugin-arrow-return-style-x > 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] [![License][license-src]][license-href] ## Attribution This project is a fork of [`eslint-plugin-arrow-return-style`](https://github.com/u3u/eslint-plugin-arrow-return-style) by [u3u](https://github.com/u3u). The original work provides the foundation for arrow function return style enforcement, and this fork extends it with additional features and improvements. ## Features This ESLint plugin provides intelligent arrow function return style enforcement, serving as an enhanced alternative to [`arrow-body-style`](https://eslint.org/docs/latest/rules/arrow-body-style#as-needed) with smarter heuristics. ### Key Features - **Context-aware decisions**: Considers line length, object complexity, JSX elements, and export context to determine the best return style - **Handles complex cases**: Works with objects, arrays, multiline expressions, and named exports that other rules miss - **Auto-fixes everything**: No manual cleanup needed - the plugin fixes code automatically - **Consistent exports**: Forces explicit returns for named exports to match regular function style - **Prettier compatible**: Zero conflicts with Prettier formatting - works seamlessly together ## Installation ```bash # npm npm install eslint-plugin-arrow-return-style-x --save-dev # pnpm pnpm add eslint-plugin-arrow-return-style-x -D # yarn yarn add eslint-plugin-arrow-return-style-x --dev ``` ## Usage ### Flat Config (ESLint 9+) ```js import arrowReturnStyle from "eslint-plugin-arrow-return-style-x"; export default [arrowReturnStyle.configs.recommended.rules]; ``` ### Legacy Config (.eslintrc) ```json { "extends": ["plugin:arrow-return-style-x/recommended"] } ``` ## Configuration ### Basic Setup ```json { "rules": { "arrow-return-style-x/arrow-return-style": [ "error", { "maxLen": 80, "objectReturnStyle": "complex-explicit" } ] } } ``` Key options include `maxLen` (line length limit), `objectReturnStyle` (object/array handling), JSX and named export controls, plus automatic Prettier integration when available. 📖 **[See full configuration options →](src/rules/arrow-return-style/documentation.md)** ### Rules Overview - **`arrow-return-style`**: Main rule with extensive configuration options - **`no-export-default-arrow`**: Converts anonymous exports to named functions (no configuration needed) ## Quick Example ```js // ❌ Before: Inconsistent arrow function styles const longFunc = () => someVeryLongFunctionCall() + anotherLongCall() + moreCode(); export const getUserBad = () => ({ name: "admin" }); const complexFunc = () => ({ ...state, [key]: value }); // ✅ After: Consistent, readable arrow functions const longFunc2 = () => { return someVeryLongFunctionCall() + anotherLongCall() + moreCode(); }; export const getUserGood = () => { return { name: "admin" }; }; const complexFunc2 = () => { return { ...state, [key]: value }; }; const simple = () => ({ name: "test" }); // Simple cases stay implicit ``` 📖 **[See more examples →](src/rules/arrow-return-style/documentation.md)** ## Rules Reference <!-- begin auto-generated rules list --> 🔧 Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).\ 💭 Requires [type information](https://typescript-eslint.io/linting/typed-linting). | Name                    | Description | 🔧 | 💭 | | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------- | :-- | :-- | | [arrow-return-style](src/rules/arrow-return-style/documentation.md) | Enforce consistent arrow function return style based on length, multiline expressions, JSX usage, and export context | 🔧 | | | [no-export-default-arrow](src/rules/no-export-default-arrow/documentation.md) | Disallow anonymous arrow functions as export default declarations | 🔧 | 💭 | <!-- end auto-generated rules list --> ## Contributing Contributions are welcome! ## License [MIT](./LICENSE) License © 2025 [Christopher Buss](https://github.com/christopher-buss) Original work © 2023 [u3u](https://github.com/u3u) <!-- Badges --> [npm-version-src]: https://img.shields.io/npm/v/eslint-plugin-arrow-return-style-x [npm-version-href]: https://npmjs.com/package/eslint-plugin-arrow-return-style-x [npm-downloads-src]: https://img.shields.io/npm/dm/eslint-plugin-arrow-return-style-x [npm-downloads-href]: https://npmjs.com/package/eslint-plugin-arrow-return-style-x [license-src]: https://img.shields.io/github/license/christopher-buss/eslint-plugin-arrow-return-style-x.svg [license-href]: ./LICENSE