feat: Приведение документации в соответствие конфигурации

This commit is contained in:
Ilia Mashkov
2025-11-23 15:38:19 +03:00
parent 5af3fbfdc3
commit 53d7b90c72
3 changed files with 45 additions and 7 deletions

View File

@@ -94,12 +94,22 @@ Babel используется через `babel-loader` в webpack конфиг
```typescript
// config/build/loaders/buildBabelLoader.ts
{
test: /\.(js|jsx|tsx)$/,
exclude: /node_modules/,
test: /\.(js|jsx|tsx|ts)$/,
exclude: [
/node_modules/,
/\.test\.(ts|tsx)$/, // Исключаем тестовые файлы
/\.spec\.(ts|tsx)$/, // Исключаем spec файлы
/\.stories\.(ts|tsx)$/ // Исключаем Storybook файлы
],
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
cacheDirectory: true, // Кеширование для ускорения пересборки
presets: [
'@babel/preset-env',
['@babel/preset-react', { runtime: 'automatic' }],
'@babel/preset-typescript' // Компиляция TypeScript через Babel
],
plugins: [
isDev && require.resolve('react-refresh/babel')
].filter(Boolean)
@@ -108,6 +118,9 @@ Babel используется через `babel-loader` в webpack конфиг
}
```
**Важно:** TypeScript компилируется через Babel, а не через `ts-loader`.
Проверка типов выполняется отдельно через `pnpm type-check` (tsc --noEmit).
## React Refresh (только в dev режиме)
В режиме разработки добавляется плагин `react-refresh/babel` для горячей перезагрузки React компонентов без потери состояния.

View File

@@ -22,3 +22,15 @@ jest.mock('gsap', () => {
Power2: gsapMock.Power2, // Экспортируем Power2 отдельно
}
})
// Глобальный мок для @gsap/react
jest.mock('@gsap/react', () => ({
useGSAP: (fn: () => void) => {
// Выполняем функцию немедленно в тестах
// eslint-disable-next-line react-hooks/rules-of-hooks
const { useEffect } = require('react')
useEffect(() => {
fn()
}, [])
},
}))

View File

@@ -34,10 +34,20 @@
- **paths**: Настройка алиасов для импортов
```json
{
"@/*": ["./src/*"],
"*": ["./src/*"]
}
```
Позволяет импортировать файлы из `src` без указания полного пути
Позволяет импортировать файлы из `src` с использованием `@/` или без префикса
### Типы
- **types**: Глобальные типы для проекта
```json
["node", "jest", "@testing-library/jest-dom"]
```
- `node` - типы Node.js API
- `jest` - типы для Jest тестов
- `@testing-library/jest-dom` - типы для дополнительных матчеров Jest
## Настройки ts-node
@@ -71,10 +81,13 @@ pnpm type-check
### Использование алиасов путей
```typescript
// Вместо:
import { Button } from '../../../components/Button'
import { Button } from '../../../shared/ui/Button'
// Можно писать:
import { Button } from 'components/Button'
// Можно писать с @ алиасом:
import { Button } from '@/shared/ui/Button'
// Или без префикса (для совместимости):
import { Button } from 'shared/ui/Button'
```
### JSX без импорта React