chore: remove prettier, consolidate formatting under biome

- Remove prettier dependency and config files (.prettierrc, .prettierignore)
- Update root format/format:check scripts to use biome only (via frontend)
- Update lint-staged: remove prettier --check, keep biome + eslint
- Update CI: remove redundant format:check step
- Update ADR-018 with code-first TanStack Router approach note
This commit is contained in:
Sergey Krylov 2026-06-23 06:58:35 +03:00
parent 7e10b4b8aa
commit c7a8993b4a
6 changed files with 18 additions and 24 deletions

View File

@ -26,9 +26,6 @@ jobs:
- name: Lint
run: npm run lint
- name: Format check
run: npm run format:check
- name: Test backend
run: npm run test:backend

View File

@ -1 +0,0 @@
apps/frontend/

View File

@ -1,6 +0,0 @@
{
"singleQuote": true,
"trailingComma": "all",
"printWidth": 100,
"semi": true
}

View File

@ -38,7 +38,7 @@
## Решение
Мигрировать на **TanStack Router**.
Мигрировать на **TanStack Router** (code-first approach).
Причины:
1. **Типобезопасность** — RouteTree generation исключает опечатки в путях и невалидные search params
@ -48,6 +48,8 @@
5. **Search params** — типизированная валидация вместо строковых `useSearchParams`
6. **Меньший размер** — 3-4KB vs 8KB react-router-dom
> **Примечание о реализации:** Изначально планировался file-based подход с `@tanstack/router-plugin`, но плагин не генерировал `routeTree.gen.ts` корректно на текущей версии Vite/плагина. Принято решение использовать code-first подход — все маршруты определяются вручную в `routeTree.tsx` через `createRootRoute` + `createRoute`. Это даёт тот же функционал (типобезопасность, guard'ы, код-сплиттинг) без зависимости от Vite-плагина.
## Последствия
### Положительные
@ -58,14 +60,17 @@
### Риски
- Переписывание всех роутов, компонентов навигации (`Link`, `useNavigate`) и тестов
- `MemoryRouter` в тестах заменяется на `createMemoryRouter` из TanStack Router
- Файловая структура роутов меняется — `src/app/routes/` с Route Tree generation
- `MemoryRouter` в тестах заменяется на `createMemoryHistory` + `RouterProvider` из TanStack Router
- Файловая структура роутов меняется — `src/app/routing/` с code-first определением в `routeTree.tsx`
- TanStack Router не экспортирует `useSearchParams` — потребовалась обёртка `useSearchParamsCompat`
- `useNavigate` использует объектный синтаксис: `navigate({ to: '...' })` вместо строкового `navigate('...')`
- Learning curve для команды
### Миграция
- Каждый роут переносится по одному
- Старый `AppRoutes.tsx` сохраняется до полного прохождения тестов
- `react-router-dom` удаляется только после верификации
- Все маршруты определены в одном `routeTree.tsx` (code-first)
- Старый `AppRoutes.tsx` удалён после прохождения тестов
- `react-router-dom` удалён из зависимостей после верификации
- Все 125 тестов проходят, сборка зелёная
## Связанные документы
- `docs/research/frontend-infrastructure-tooling/react-router-vs-tanstack-router.md`

5
package-lock.json generated
View File

@ -13,8 +13,7 @@
],
"devDependencies": {
"husky": "^9.1.7",
"lint-staged": "^16.4.0",
"prettier": "^3.0.0"
"lint-staged": "^16.4.0"
}
},
"apps/backend": {
@ -28534,6 +28533,8 @@
"integrity": "sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==",
"dev": true,
"license": "MIT",
"optional": true,
"peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},

View File

@ -15,8 +15,8 @@
"test:backend": "npm run test -w apps/backend",
"test:frontend": "npm run test -w apps/frontend",
"lint": "npm run lint -w apps/backend && npm run lint -w apps/frontend",
"format": "npm run format -w apps/frontend && prettier --write \"**/*.{ts,tsx}\"",
"format:check": "npm run format:check -w apps/frontend && prettier --check \"**/*.{ts,tsx}\"",
"format": "npm run format -w apps/frontend",
"format:check": "npm run format:check -w apps/frontend",
"dev:docs": "npm run dev -w apps/docs",
"build:docs": "npm run build -w apps/docs",
"build:design-system": "npm run build -w packages/design-system",
@ -31,13 +31,11 @@
"apps/backend/src/**/*.{ts,tsx}": ["eslint --max-warnings=0"],
"apps/backend/test/**/*.{ts,tsx}": ["eslint --max-warnings=0"],
"apps/frontend/src/**/*.{ts,tsx}": ["biome check --write"],
"packages/design-system/src/**/*.{ts,tsx}": ["eslint --max-warnings=0"],
"**/*.{ts,tsx}": ["prettier --check"]
"packages/design-system/src/**/*.{ts,tsx}": ["eslint --max-warnings=0"]
},
"devDependencies": {
"husky": "^9.1.7",
"lint-staged": "^16.4.0",
"prettier": "^3.0.0"
"lint-staged": "^16.4.0"
},
"overrides": {
"@storybook/test": {