tsconfig.jsonnode), она прошла четыре значительных итерации, чтобы поддерживать современный вывод ESNext, новый JSX-трансформер (react-jsx), разрешение модулей на основе бандлера и совместимость с Vite.Целевая версия (Target): Начиналась с es5 (стандарт CRA для максимальной совместимости с браузерами), обновлена до esnext во время миграции на Vite. Vite обрабатывает транспиляцию для конкретных целевых браузеров отдельно, поэтому слой TypeScript может ориентироваться на новейшие возможности JS.
Разрешение модулей (Module Resolution): Изменено с node (стандарт CRA, разрешает модули с помощью алгоритма Node.js) на bundler (совместимо с Vite, понимает поле exports в package.json и условные экспорты). Это было самое значительное изменение при миграции — разрешение node не могло найти некоторые пакеты в контексте Vite, ориентированном на ESM.
JSX: Изначально использовались оба значения "jsx": "react" и "jsx": "react-jsx" (дублирующиеся записи — артефакт CRA), затем очищено до одного "react-jsx". Это включает новый JSX-трансформер (React 17+), где import React from 'react' больше не требуется в каждом JSX-файле.
Шаблоны включения (Include Patterns): Эволюционировали от универсального "src" к явным glob-шаблонам (src/**/*.tsx, src/**/*.ts, src/**/*.js и т.д.), затем расширены для включения .d.ts файлов и react-app-env.d.ts, и наконец vite-env.d.ts заменил объявление CRA.
Строгий режим (Strict Mode): Включён с самого начала ("strict": true), обеспечивает проверки на null, строгие типы функций и строгую инициализацию свойств во всей клиентской кодовой базе.
| Коммит | Что изменилось |
|---|---|
bf988bc6d | Три изменения для миграции на Vite: (1) target обновлён с es5 на esnext — Vite обрабатывает совместимость с браузерами, а не TypeScript; (2) moduleResolution изменён с node на bundler — требуется для обработки модулей Vite в стиле ESM; (3) запись в списке include изменена с src/react-app-env.d.ts на src/vite-env.d.ts — приведение в соответствие с новым инструментом сборки. |
f867698d3 | Расширены шаблоны include для покрытия src/**/*.ts, src/**/*.d.ts, и явно добавлен src/react-app-env.d.ts. Это потребовалось, так как кодовая база начала использовать TypeScript наряду с существующими JavaScript-файлами, и компилятору нужно было обрабатывать новые .ts и файлы объявлений. |
87c1212c2 | Удалена дублирующаяся запись "jsx": "react" (оставлено только "jsx": "react-jsx" внизу). Изменён include с универсального "src" на конкретные glob-шаблоны (src/**/*.tsx, src/**/*.js, src/**/*.jsx, src/**/*.scss) и добавлен exclude для node_modules. Это было частью работы над функцией множественной загрузки, ужесточающей конфигурацию сборки. |
377b3e3ac | Создан первоначальный tsconfig.json для веб-приложения. Установлена базовая конфигурация с целевой версией es5, настройками, совместимыми с CRA, дублирующимися записями jsx и простым шаблоном "include": ["src"]. Это была отправная точка, когда клиентская часть на React была впервые внедрена в монорепозиторий ProjectForge. |