Найти в Дзене
Chris Roylance

Вышел релиз‑кандидат ESLint 10.0.0‑rc.0

Перевод официальной новости ESLint v10.0.0-rc.0 Мы только что выпустили ESLint v10.0.0-rc.0, крупное обновление ESLint. В этом релизе добавлены новые функции и исправлены несколько ошибок, обнаруженных в предыдущем релизе. В этом релизе также есть некоторые изменения, нарушающие обратную совместимость, поэтому внимательно ознакомьтесь с информацией ниже. Эта версия ESLint не готова к использованию в производственной среде и предоставляется для сбора отзывов от сообщества перед выпуском финальной версии. Пожалуйста, сообщите нам о любых проблемах или замечаниях, создав соответствующие запросы в нашем репозитории GitHub. Обратите внимание, что эта предварительная версия ESLint имеет отдельный раздел документации. С самого начала своего существования ESLint предоставлял API RuleTester, чтобы помочь авторам плагинов тестировать свои правила на основе пользовательских тестовых случаев и конфигураций. В этом релизе представлен ряд улучшений в RuleTester, направленных на обеспечение более на
Оглавление

Перевод официальной новости 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 и определяет сообщение с заполнителями:

-2

Если недопустимый тестовый случай содержит messageId: "trivialSum", но не содержит данных:

-3

Теперь RuleTester будет выдавать ошибку утверждения, указывающую на отсутствие свойства данных.

Для решения этой проблемы добавьте значения-заполнители в объект ошибки:

-4

Улучшена отчетность о местоположении неработающих тестов

Теперь RuleTester добавляет к трассировкам стека информацию, которая упрощает поиск неработающих тестовых случаев в исходном коде. Например, если правило no-trivial-sum не выдает ошибку для 1 + 2, тестовый случай из предыдущего раздела завершится неудачей, и в выходных данных теста будут отображаться строки трассировки стека, подобные:

-5

Первая строка указывает:

  • 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. Например:

-6

будет рассматриваться как функция, принимающая только 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) (Али Эссалихи)