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:
parent
7e10b4b8aa
commit
c7a8993b4a
@ -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
|
||||
|
||||
|
||||
@ -1 +0,0 @@
|
||||
apps/frontend/
|
||||
@ -1,6 +0,0 @@
|
||||
{
|
||||
"singleQuote": true,
|
||||
"trailingComma": "all",
|
||||
"printWidth": 100,
|
||||
"semi": true
|
||||
}
|
||||
@ -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
5
package-lock.json
generated
@ -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"
|
||||
},
|
||||
|
||||
10
package.json
10
package.json
@ -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": {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user