chore: finish frontend ESLint migration #18
Enable every plugin recommended preset and replace Biome with ESLint formatting. Preserve API contracts and JSX whitespace; verify source, tests, builds and tooling.
This commit is contained in:
@@ -81,32 +81,29 @@ npm run verify
|
||||
```
|
||||
|
||||
Команда проверяет, что generated OpenAPI types соответствуют committed snapshot,
|
||||
затем запускает strict TypeScript, Biome, ESLint и проверку его конфигурации,
|
||||
затем запускает strict TypeScript, ESLint и проверку его конфигурации,
|
||||
один coverage-backed запуск Vitest,
|
||||
Knip, dependency rules приложения и stories, сборки приложения и Storybook.
|
||||
|
||||
`npm run lint` объединяет `lint:biome` и `lint:eslint`. Biome сохраняет
|
||||
форматирование, сортировку импортов, magic numbers и accessibility-проверки.
|
||||
[ESLint](eslint.config.mjs) добавляет typed linting, React Compiler/hooks,
|
||||
Fast Refresh, TanStack Query, выбранные Unicorn-правила и проверки тестов/stories.
|
||||
Prettier не добавлен. `npm run test:lint` проверяет правила на ошибочных примерах
|
||||
и исключение generated/build artifacts. `lint:eslint` сначала собирает private
|
||||
packages, чтобы анализ типов использовал их актуальные declarations.
|
||||
`npm run lint` запускает ESLint с `--max-warnings=0`; `npm run lint:fix`
|
||||
применяет автофиксы. [Конфигурация](eslint.config.mjs) подключает рекомендованные
|
||||
наборы всех установленных плагинов: TypeScript, React, Hooks, Refresh, Query,
|
||||
Unicorn, import-x, SonarJS, RegExp, Security, Perfectionist, Stylistic,
|
||||
Vitest, Testing Library, jest-dom и Storybook. Правила React, тестов и stories
|
||||
применяются к соответствующим файлам; generated/build artifacts исключены.
|
||||
|
||||
Пересекающиеся hook-диагностики принадлежат официальному `react-hooks`.
|
||||
Testing Library проверяет async-корректность; DOM structure/geometry tests
|
||||
сохраняют прямой доступ к узлам. Async doubles допускаются без искусственного
|
||||
`await`; Vitest допускает второй аргумент сообщения и ветвления фиксированных
|
||||
`it.each` сценариев. React event handlers допускают Promise, но их тела остаются
|
||||
под `no-floating-promises`. Локальные исключения объясняют сохранение wire
|
||||
ProblemDetails, generated query keys и раннее подключение rejection assertions
|
||||
в race-тестах. Плагин Query не доказывает корректность всех generated/custom
|
||||
обёрток: transport/cache сценарии по-прежнему проверяют MSW-тесты.
|
||||
Stylistic отвечает за форматирование JS/TS/TSX, Perfectionist — за сортировку.
|
||||
Сохраняются табы, двойные кавычки и точки с запятой. Biome удалён; Prettier
|
||||
не используется. CSS, JSON и Markdown не форматируются через ESLint.
|
||||
`lint-staged` исправляет JS/TS/TSX перед commit. `lint:eslint` сначала собирает
|
||||
private packages, чтобы анализ типов использовал актуальные declarations.
|
||||
`npm run test:lint` проверяет действующие presets и ошибочные примеры.
|
||||
|
||||
Дополнительные `no-unnecessary-condition` и `no-deprecated` пока не включены:
|
||||
первому нужна отдельная оценка индексного доступа и защитных runtime guards,
|
||||
второму — отдельная миграция API зависимостей. Пакеты второй волны и
|
||||
`jsx-a11y` без заявленной поддержки ESLint 10 отложены в
|
||||
Точечные исключения в исходниках объясняют контракты и ограничения статического
|
||||
анализа; изменение nullable API fields, query keys или порядка race-операций
|
||||
ради линтера недопустимо. Архитектуру проверяет dependency-cruiser, поведение —
|
||||
Vitest/MSW и Chromium. Линтеры не заменяют semantic/security review.
|
||||
`jsx-a11y` без поддержки ESLint 10 остаётся отложенным в
|
||||
[workspace issue #18](https://git.personal.ksv741.ru/WealthLedger/main/issues/18).
|
||||
|
||||
Vitest включает JSDOM-тесты и проверку геометрии секций позиций в headless
|
||||
|
||||
Reference in New Issue
Block a user