tsconfig.jsonnode), elle a évolué à travers quatre itérations significatives pour prendre en charge la sortie ESNext moderne, la nouvelle transformation JSX (react-jsx), la résolution de modules basée sur le bundler et la compatibilité avec Vite.Cible : Commencée à es5 (la valeur par défaut de CRA pour une compatibilité maximale avec les navigateurs), mise à niveau vers esnext lors de la migration vers Vite. Vite gère la transpilation vers des cibles de navigateur spécifiques séparément, de sorte que la couche TypeScript peut cibler les dernières fonctionnalités JavaScript.
Résolution de modules : Passée de node (valeur par défaut de CRA, résout les modules en utilisant l'algorithme de résolution Node.js) à bundler (compatible Vite, comprend le champ exports dans package.json et les exports conditionnels). Ce fut le changement de migration le plus impactant — la résolution node ne parvenait pas à résoudre certains packages dans le contexte ESM-first de Vite.
JSX : Utilisait initialement à la fois "jsx": "react" et "jsx": "react-jsx" (entrées en double — un artefact de CRA), nettoyé pour ne conserver que "react-jsx". Cela active la nouvelle transformation JSX (React 17+) où import React from 'react' n'est plus nécessaire dans chaque fichier JSX.
Modèles d'inclusion : Ont évolué d'un "src" générique à des motifs glob explicites (src/**/*.tsx, src/**/*.ts, src/**/*.js, etc.), puis étendus pour inclure les fichiers .d.ts et react-app-env.d.ts, et enfin vite-env.d.ts remplaçant la déclaration CRA.
Mode strict : Activé dès le début ("strict": true), fournissant des vérifications de nullité, des types de fonctions stricts et une initialisation stricte des propriétés dans toute la base de code frontend.
| Commit | Ce qui a changé |
|---|---|
bf988bc6d | Trois changements pour la migration vers Vite : (1) target mis à niveau de es5 vers esnext — Vite gère la compatibilité navigateur, pas TypeScript ; (2) moduleResolution changé de node à bundler — requis pour la gestion des modules ESM-first de Vite ; (3) l'entrée de la liste d'inclusion est passée de src/react-app-env.d.ts à src/vite-env.d.ts — alignement avec le nouvel outil de build. |
f867698d3 | Extension des motifs include pour couvrir src/**/*.ts, src/**/*.d.ts, et ajout explicite de src/react-app-env.d.ts. Cela était nécessaire car la base de code commençait à adopter TypeScript aux côtés des fichiers JavaScript existants, nécessitant que le compilateur prenne en compte les nouveaux fichiers .ts et les fichiers de déclaration. |
87c1212c2 | Suppression de l'entrée en double "jsx": "react" (ne laissant que "jsx": "react-jsx" en bas). Changement de include du générique "src" vers des motifs glob spécifiques (src/**/*.tsx, src/**/*.js, src/**/*.jsx, src/**/*.scss) et ajout d'un exclude pour node_modules. Cela faisait partie du travail sur la fonctionnalité de téléchargement multiple, resserrant la configuration de build. |
377b3e3ac | Création du tsconfig.json initial pour l'application web. Établissement de la configuration de base avec la cible es5, les paramètres compatibles CRA, les entrées jsx en double et le motif simple "include": ["src"]. C'était le point de départ lorsque le frontend React a été introduit pour la première fois dans le monorepo ProjectForge. |