ESLint Plugin Perfectionist

VersionGitHub starsDownloads per weekLicense

Для сортировки в ESLint было несколько разных плагинов: один для импортов, другой для ключей объектов, третий для JSX-пропсов. У каждого свои настройки. Мне хотелось один плагин для всей сортировки, поэтому я написал Perfectionist.

Сейчас он сортирует импорты, объекты, типы, JSX-пропсы, классы и многое другое. Все правила исправляют код автоматически.

Было:

JavaScript
let config = {
  port: 8080,
  // Use HTTPS in production
  https: true,
  host: 'localhost',
}

Стало:

JavaScript
let config = {
  host: 'localhost',
  // Use HTTPS in production
  https: true,
  port: 8080,
}

Важно, чтобы сортировка ничего не ломала. Комментарий переезжает вместе со своей строкой, а ключи не перескакивают через ...spread: от их порядка зависит, какое значение останется в объекте.

Порядок сортировки выбираете вы: по алфавиту, естественный (item2 перед item10), по длине строки или свой. Я сам сортирую по длине строки, и импорты выстраиваются лесенкой.

Как начать его использовать?

Установите ESLint и плагин:

Bash
npm install --save-dev eslint eslint-plugin-perfectionist

Подключите готовый конфиг в eslint.config.js, например с естественной сортировкой:

JavaScript
import perfectionist from 'eslint-plugin-perfectionist'

export default [perfectionist.configs['recommended-natural']]

Сначала линтер покажет много ошибок. Это нормально: запустите ESLint с флагом --fix, и плагин всё отсортирует сам.

Все правила и их настройки описаны на perfectionist.dev.