diff --git a/babel.config.README.md b/babel.config.README.md index ed5352c..6fdfb26 100644 --- a/babel.config.README.md +++ b/babel.config.README.md @@ -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 компонентов без потери состояния. diff --git a/config/jest/setupTests.ts b/config/jest/setupTests.ts index b5c24bc..004e08d 100644 --- a/config/jest/setupTests.ts +++ b/config/jest/setupTests.ts @@ -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() + }, []) + }, +})) diff --git a/tsconfig.README.md b/tsconfig.README.md index 6ec777c..bc247f3 100644 --- a/tsconfig.README.md +++ b/tsconfig.README.md @@ -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