tsconfig.jsonnode), 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.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.
| Commit | Qué cambió |
|---|---|
bf988bc6d | Tres 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. |
f867698d3 | Se 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. |
87c1212c2 | Se 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. |
377b3e3ac | Se 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. |