Oxlint — более быстрая альтернатива ESLint

3a074ffce49e2c8d6165e77f68e70f5d.png

Друзья, всем привет! Меня зовут Игорь Карелин, я frontend-разработчик в компании Домклик. Недавно стал общедоступен новый линтер Oxlint, основанный на языке программирования Rust, и многие эксперты высоко оценили его. Какие преимущества Oxlint предоставляет по сравнению со своим предшественником ESLint?

Компилятор Oxc

Компилятор JavaScript Oxidation (Oxc) — это набор высокопроизводительных инструментов для языка JavaScript, написанных на Rust. Акцент сделан на создании основных инструментов компилятора для JavaScript: парсера, линтера, форматтера, транспилятора, минификатора и преобразователя.

Парсер демонстрирует в два раза более высокую скорость по сравнению с парсером swc в рамках тестирования, которое включает анализ файлов .js (x) и .ts (x). Он успешно проходит все тесты парсера Test262 и практически все тесты, используемые в Babel и TypeScript.

8585bc791028190035822e0e6e987046.png

Для резолвера все параметры настроены в соответствии с webpack/enhanced-resolve. Эффективность в 28 раз выше, чем у webpack/enhanced-resolve при проведении соответствующего теста.

Node v18.17.1
┌─────────┬────────────────────┬────────────┬─────────┐
│ (index) │        name        │    mean    │ compare │
├─────────┼────────────────────┼────────────┼─────────┤
│    0    │ 'enhanced-resolve' │ '0.3553ms' │ '28.01' │
│    1    │   'oxc-resolver'   │ '0.0127ms' │ '1.00'  │
└─────────┴────────────────────┴────────────┴─────────┘

Сравнение Oxlint и ESLint

Производительность Oxlint стала объектом оживлённых обсуждений в сообществе из-за её впечатляющей эффективности.

Отзывы

Ссылка на оригинал отзывов

Конечно, помимо высокой производительности Oxlint обладает множеством особенностей, которые отличают его от старшего аналога — ESLint. В дальнейшем мы немного сравним его с Oxlint. ESLint (ECMAScript Lint) — это инструмент для статического анализа кода на JavaScript. Его история началась в 2013 году, когда Николас С. Закас (Nicholas C. Zakas) создал проект по созданию гибкого и настраиваемого линтера для JavaScript, который может быть легко интегрирован в различные проекты. В некоторых случаях использование ESLint может повлечь за собой увеличение времени компиляции и замедление работы IDE, особенно при обработке больших проектов. Это связано с интенсивным статическим анализом кода.

Конфигурирование новых кодовых баз на JavaScript/TypeScript становится всё более сложным процессом. Возникает высокий риск несовместимости между используемыми инструментами, что может удлинить настройку проекта. По этой причине был создан Oxlint которому не нужна предварительная настройка; даже использование Node.js не является обязательным условием. Большинство настроек можно выполнить через командную строку. Oxlint по умолчанию обнаруживает ошибочный, избыточный или запутанный код, отдавая приоритет корректности перед избыточными правилами (помеченными как perf, suspicious, pedantic или style), которые по умолчанию отключены.

Производительность Oxlint превышает производительность ESLint в 50–100 раз с возможностью масштабирования в зависимости от количества ядер процессора (тест). Это обусловлено тем, что Oxlint был специально создан с использованием Rust и параллельной обработки в качестве ключевых элементов повышения эффективности.

5cabba948933f5494a3c09802295cb7b.png

Oxlint содержит более 200 правил, включая правила из ESLint, TypeScript, eslint-plugin-react и .eslint-plugin-jest, eslint-plugin-unicorn, eslint-plugin-jsx-a11y. Список постоянно растёт. Линтер поддерживает файл .eslintignore и предоставляет функцию отключения правил с использованием комментариев ESLint.

Для тестирования Oxlint в вашем проекте на JavaScript/TypeScript выполните следующую команду в корневой директории вашего репозитория:

$ npx oxlint@latest

Чтение сообщений линтера может оказаться нетривиальной задачей. Oxlint стремится упростить эту задачу, выявляя основные причины и предоставляя полезные сообщения, устраняя необходимость длительного чтения документации по правилам и экономя драгоценное время.

0e45a0ce8a9352febad495ac80164619.png

Кроме достоинств у Oxlint также есть свои недостатки.

Недостатки Oxlint

В настоящее время Oxlint не является полноценной заменой ESLint; его роль заключается в улучшении, когда низкая производительность ESLint становится узким местом в вашем рабочем процессе.

На текущий момент Oxlint ещё не имеет системы плагинов, однако в дальнейшем обещают добавить правила из известных плагинов, таких как TypeScript, React, Jest, Unicorn, JSX-a11y и Import.

Вывод

Oxlint представляет собой значительный шаг вперёд в области статического анализа кода на JavaScript/TypeScript. Несмотря на ряд преимуществ, включая высокую производительность и активное внедрение правил из популярных плагинов, стоит учитывать, что у Oxlint также есть свои ограничения и недостатки.

Эффективное использование Oxlint зависит от особенностей проекта и индивидуальных потребностей разработчиков. Я рекомендую внимательно оценить преимущества и недостатки инструмента в контексте конкретного проекта, прежде чем принимать решение о его использовании.

Благодарю вас за внимание и интерес к статье! Надеюсь, что она была для вас полезной и информативной. Если у вас есть какие-либо вопросы или комментарии, не стесняйтесь поделиться ими. Ваше внимание и время ценны для меня. Спасибо за прочтение!

© Habrahabr.ru