EN · DE · RU · FR · ES

#2764: tsconfig.json

projectforge-webapp/tsconfig.json Configuración del compilador TypeScript · projectforge-webapp/tsconfig.json 35 líneas · 35 código · 0 comentarios · 0 en blanco
La configuración del compilador TypeScript para la aplicación web React de ProjectForge. Controla todos los aspectos de la verificación de tipos, resolución de módulos, transpilación JSX e inclusión de archivos para la base de código del frontend. Originalmente orientado a ES5 con JSX React clásico y resolución de módulos compatible con CRA (node), ha evolucionado a lo largo de cuatro iteraciones significativas para admitir la salida ESNext moderna, la nueva transformación JSX (react-jsx), la resolución de módulos basada en bundler y la compatibilidad con Vite.

Arquitectura

Configuraciones clave y su evolución

Objetivo (target): Comenzó en es5 (el valor predeterminado de CRA para máxima compatibilidad con navegadores), se actualizó a esnext durante la migración a Vite. Vite maneja la transpilación a objetivos de navegador específicos por separado, por lo que la capa de TypeScript puede apuntar a las características JS más recientes.

Resolución de módulos: Cambió de node (predeterminado de CRA, resuelve módulos usando el algoritmo de resolución de Node.js) a bundler (compatible con Vite, entiende el campo exports en package.json y las exportaciones condicionales). Este fue el cambio de migración más impactante: la resolución node fallaba al resolver algunos paquetes en el contexto ESM-first de Vite.

JSX: Inicialmente usaba tanto "jsx": "react" como "jsx": "react-jsx" (entradas duplicadas, un artefacto de CRA), se limpió para dejar solo "react-jsx". Esto habilita la nueva transformación JSX (React 17+) donde import React from 'react' ya no es necesario en cada archivo JSX.

Patrones de inclusión: Evolucionó de un "src" global a patrones glob explícitos (src/**/*.tsx, src/**/*.ts, src/**/*.js, etc.), luego se expandió para incluir archivos .d.ts y react-app-env.d.ts, y finalmente vite-env.d.ts reemplazando la declaración de CRA.

Modo estricto: Habilitado desde el inicio ("strict": true), proporciona comprobaciones de nulos, tipos de funciones estrictos e inicialización estricta de propiedades en toda la base de código del frontend.

Historial de Git

CommitQué cambió
bf988bc6dTres cambios para la migración a Vite: (1) target actualizado de es5 a esnext — Vite maneja la compatibilidad con navegadores, no TypeScript; (2) moduleResolution cambiado de node a bundler — requerido para el manejo de módulos ESM-first de Vite; (3) la entrada de la lista de inclusión cambió de src/react-app-env.d.ts a src/vite-env.d.ts — alineándose con la nueva herramienta de compilación.
f867698d3Se expandieron los patrones de include para cubrir src/**/*.ts, src/**/*.d.ts, y se agregó src/react-app-env.d.ts explícitamente. Esto fue necesario porque la base de código comenzó a adoptar TypeScript junto con archivos JavaScript existentes, requiriendo que el compilador recogiera los nuevos archivos .ts y de declaración.
87c1212c2Se eliminó la entrada duplicada "jsx": "react" (dejando solo "jsx": "react-jsx" al final). Se cambió include de "src" global a patrones glob específicos (src/**/*.tsx, src/**/*.js, src/**/*.jsx, src/**/*.scss) y se agregó un exclude para node_modules. Esto fue parte del trabajo de la función de carga múltiple, ajustando la configuración de compilación.
377b3e3acSe creó el tsconfig.json inicial para la aplicación web. Se estableció la configuración base con objetivo es5, configuraciones compatibles con CRA, las entradas duplicadas de jsx y el patrón simple "include": ["src"]. Este fue el punto de partida cuando el frontend React se introdujo por primera vez en el monorepo de ProjectForge.