EN · DE · RU · FR · ES

#2764: tsconfig.json

projectforge-webapp/tsconfig.json Конфигурация компилятора TypeScript · projectforge-webapp/tsconfig.json 35 строк · 35 кода · 0 комментариев · 0 пустых
Конфигурация компилятора TypeScript для веб-приложения ProjectForge на React. Управляет всеми аспектами проверки типов, разрешения модулей, транспиляции JSX и включения файлов для клиентской кодовой базы. Изначально нацеленная на ES5 с классическим React JSX и совместимым с CRA разрешением модулей (node), она прошла четыре значительных итерации, чтобы поддерживать современный вывод 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, строгие типы функций и строгую инициализацию свойств во всей клиентской кодовой базе.

История Git

КоммитЧто изменилось
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.