ESLint Plugin Perfectionist
Для сортировки в ESLint было несколько разных плагинов: один для импортов, другой для ключей объектов, третий для JSX-пропсов. У каждого свои настройки. Мне хотелось один плагин для всей сортировки, поэтому я написал Perfectionist.
Сейчас он сортирует импорты, объекты, типы, JSX-пропсы, классы и многое другое. Все правила исправляют код автоматически.
Было:
let config = {
port: 8080,
// Use HTTPS in production
https: true,
host: 'localhost',
}Стало:
let config = {
host: 'localhost',
// Use HTTPS in production
https: true,
port: 8080,
}Важно, чтобы сортировка ничего не ломала. Комментарий переезжает вместе со своей строкой, а ключи не перескакивают через ...spread: от их порядка зависит, какое значение останется в объекте.
Порядок сортировки выбираете вы: по алфавиту, естественный (item2 перед item10), по длине строки или свой. Я сам сортирую по длине строки, и импорты выстраиваются лесенкой.
Как начать его использовать?
Установите ESLint и плагин:
npm install --save-dev eslint eslint-plugin-perfectionistПодключите готовый конфиг в eslint.config.js, например с естественной сортировкой:
import perfectionist from 'eslint-plugin-perfectionist'
export default [perfectionist.configs['recommended-natural']]Сначала линтер покажет много ошибок. Это нормально: запустите ESLint с флагом --fix, и плагин всё отсортирует сам.
Все правила и их настройки описаны на perfectionist.dev.