# ESLint Plugin Perfectionist > ESLint plugin for sorting various data such as objects, imports, types, enums, JSX props, etc. Enforce a consistent code style with automatic sorting and organization of your TypeScript and JavaScript code. ESLint Plugin Perfectionist is a powerful tool designed to set rules for formatting your code and ensuring it remains consistent across your project. This plugin defines rules for sorting various data structures alphabetically, naturally, or by line length. All rules are automatically fixable, making it safe and easy to maintain a consistent codebase. Key features: - Automatically fixable rules for safe code formatting - Support for multiple sorting methods: alphabetical, natural, line-length, and custom - TypeScript-first with full JavaScript support - Extensive configuration options for fine-tuning - Compatible with ESLint v8.45.0 or greater ## Getting Started - [Introduction](https://perfectionist.dev/guide/introduction): Learn about ESLint Plugin Perfectionist and how it can help maintain a consistent and high-quality codebase - [Getting Started](https://perfectionist.dev/guide/getting-started): Installation and basic configuration guide - [Integrations](https://perfectionist.dev/guide/integrations): Set up automatic formatting on save in popular code editors ## Configurations - [Recommended Alphabetical](https://perfectionist.dev/configs/recommended-alphabetical): All plugin rules with alphabetical sorting in ascending order - [Recommended Natural](https://perfectionist.dev/configs/recommended-natural): Natural sorting that handles numbers intuitively (e.g., item-1, item-2, item-10) - [Recommended Line Length](https://perfectionist.dev/configs/recommended-line-length): Sort by code line length (shorter lines first) - [Recommended Custom](https://perfectionist.dev/configs/recommended-custom): Define your own custom alphabet for sorting ## Rules - [sort-array-includes](https://perfectionist.dev/rules/sort-array-includes): Sort array elements in `includes` method - [sort-classes](https://perfectionist.dev/rules/sort-classes): Sort class members and properties - [sort-decorators](https://perfectionist.dev/rules/sort-decorators): Sort decorators on classes, methods, and properties - [sort-enums](https://perfectionist.dev/rules/sort-enums): Sort TypeScript enum members - [sort-exports](https://perfectionist.dev/rules/sort-exports): Sort export statements - [sort-heritage-clauses](https://perfectionist.dev/rules/sort-heritage-clauses): Sort implements/extends clauses - [sort-import-attributes](https://perfectionist.dev/rules/sort-import-attributes): Sort import attributes - [sort-imports](https://perfectionist.dev/rules/sort-imports): Sort import declarations - [sort-interfaces](https://perfectionist.dev/rules/sort-interfaces): Sort TypeScript interface properties - [sort-intersection-types](https://perfectionist.dev/rules/sort-intersection-types): Sort TypeScript intersection types - [sort-jsx-props](https://perfectionist.dev/rules/sort-jsx-props): Sort JSX/TSX component props - [sort-maps](https://perfectionist.dev/rules/sort-maps): Sort Map elements - [sort-modules](https://perfectionist.dev/rules/sort-modules): Sort module members - [sort-named-exports](https://perfectionist.dev/rules/sort-named-exports): Sort named exports - [sort-named-imports](https://perfectionist.dev/rules/sort-named-imports): Sort named imports - [sort-object-types](https://perfectionist.dev/rules/sort-object-types): Sort TypeScript object type properties - [sort-objects](https://perfectionist.dev/rules/sort-objects): Sort object properties - [sort-sets](https://perfectionist.dev/rules/sort-sets): Sort Set elements - [sort-switch-case](https://perfectionist.dev/rules/sort-switch-case): Sort switch statement cases - [sort-union-types](https://perfectionist.dev/rules/sort-union-types): Sort TypeScript union types - [sort-variable-declarations](https://perfectionist.dev/rules/sort-variable-declarations): Sort variable declarations ## Optional - [GitHub Repository](https://github.com/azat-io/eslint-plugin-perfectionist): Source code, issues, and contributions - [NPM Package](https://npmjs.com/package/eslint-plugin-perfectionist): Package details and version history - [Alphabet Utility](https://github.com/azat-io/eslint-plugin-perfectionist#alphabet-utility): Helper class for creating custom alphabets