Перевод официальной новости ESLint v10.0.0-rc.0
Мы только что выпустили ESLint v10.0.0-rc.0, крупное обновление ESLint. В этом релизе добавлены новые функции и исправлены несколько ошибок, обнаруженных в предыдущем релизе. В этом релизе также есть некоторые изменения, нарушающие обратную совместимость, поэтому внимательно ознакомьтесь с информацией ниже.
Основные моменты
Эта версия ESLint не готова к использованию в производственной среде и предоставляется для сбора отзывов от сообщества перед выпуском финальной версии. Пожалуйста, сообщите нам о любых проблемах или замечаниях, создав соответствующие запросы в нашем репозитории GitHub.
Обратите внимание, что эта предварительная версия ESLint имеет отдельный раздел документации.
Улучшения в RuleTester
С самого начала своего существования ESLint предоставлял API RuleTester, чтобы помочь авторам плагинов тестировать свои правила на основе пользовательских тестовых случаев и конфигураций. В этом релизе представлен ряд улучшений в RuleTester, направленных на обеспечение более надежных определений тестов и улучшение отладки.
Параметр утверждения requireData
Теперь доступен новый параметр утверждения requireData. Если он установлен в значение true, RuleTester будет требовать, чтобы недействительные тестовые случаи включали объект данных всякий раз, когда messageId ссылается на сообщение с заполнителями. Это помогает гарантировать согласованность тестов с сообщениями правил, которые полагаются на подстановку заполнителей.
Например, рассмотрим гипотетическое правило no-trivial-sum, которое выдает результат для выражений типа 1 + 2 и определяет сообщение с заполнителями:
Если недопустимый тестовый случай содержит messageId: "trivialSum", но не содержит данных:
Теперь RuleTester будет выдавать ошибку утверждения, указывающую на отсутствие свойства данных.
Для решения этой проблемы добавьте значения-заполнители в объект ошибки:
Улучшена отчетность о местоположении неработающих тестов
Теперь RuleTester добавляет к трассировкам стека информацию, которая упрощает поиск неработающих тестовых случаев в исходном коде. Например, если правило no-trivial-sum не выдает ошибку для 1 + 2, тестовый случай из предыдущего раздела завершится неудачей, и в выходных данных теста будут отображаться строки трассировки стека, подобные:
Первая строка указывает:
- invalid[0]: индекс не прошедшего проверку теста в массиве invalid
- /my-project/test/no-trivial-sum.js:10: номер файла и строки, где определен этот тест. Многие терминалы IDE, включая терминал Visual Studio Code, распознают этот формат и позволяют перейти непосредственно к нужной строке.
Вторая строка указывает на начало всего массива invalid.
Обратите внимание, что номера строк могут не всегда отображаться в зависимости от структуры ваших тестов. Если строки невозможно точно определить, индекс не прошедшего проверку теста (например, 0) и выведенный фрагмент кода по-прежнему доступны для поиска теста.
Опция countThis в правиле max-params
Правило max-params теперь поддерживает новую опцию countThis, которая заменяет устаревшую countVoidThis. При установке countThis: "never" правило теперь будет игнорировать любую аннотацию this в списке аргументов функции при подсчете количества параметров в функции TypeScript. Например:
будет рассматриваться как функция, принимающая только 2 параметра.
Установка
Поскольку это предварительная версия, npm не обновит её автоматически. При установке необходимо указать тег next:
npm i eslint@next --save-dev
Вы также можете указать версию напрямую:
npm i eslint@10.0.0-rc.0 --save-dev
Руководство по миграции
Поскольку изменений много, мы создали руководство по миграции, подробно описывающее критические изменения, а также шаги, которые следует предпринять для их устранения. Мы ожидаем, что большинство пользователей смогут обновиться без каких-либо изменений в сборке, но руководство по миграции станет полезным ресурсом, если у вас возникнут проблемы.
Изменения, нарушающие обратную совместимость
f9e54f4: оценка места сбоя тестера правил (#20420) (ST-DDT)
Особенности
f0cafe5 feat: добавление опции утверждения requireData в тестер правил (#20409) (fnx)
f7ab693 feat: вывод индекса ошибок тестового случая RuleTester (#19976) (ST-DDT)
7cbcbf9 feat: добавление опции countThis к max-params (#20236) (Gerkin)
Исправленые ошибки
d186f8c исправление: обновление eslint (#20427) (renovate[bot])
2332262 исправление: местоположение ошибки не должно изменять сообщение об ошибке в RuleTester (#20421) (Milos Djermanovic)
ab99b21 исправление: убедиться, что имя файла передается в качестве третьего аргумента в verifyAndFix() (#20405) (루밀LuMir)
8a60f3b исправление: удалить ecmaVersion и sourceType из типа ParserOptions (#20415) (Pixel998)
eafd727 исправление: удалить тип области видимости TDZ (#20231) (jaymarvelz)
39d1f51 исправление: исправить типизацию Scope (#20404) (sethamus)
2bd0f13 исправление: обновить типы verify и verifyAndFix (#20384) (Франческо Тротта)
Документация
65ed0c9 docs: Обновление README (бот GitHub Actions)
b0e4717 docs: [no-await-in-loop] Расширение неприменимости (#20363) (Никлас Хамбюхен)
fca421f docs: Обновление README (бот GitHub Actions)
d925c54 docs: обновление синтаксиса конфигурации в no-lone-blocks (#20413) (Pixel998)
7d5c95f docs: удаление избыточного sourceType: "module" из примеров правил (#20412) (Pixel998)
02e7e71 docs: исправление шаблона glob .mts в примере файлов с расширениями (#20403) (Али Эссалихи)