EN · DE · RU · FR · ES

#2764 : tsconfig.json

projectforge-webapp/tsconfig.json Configuration du compilateur TypeScript · projectforge-webapp/tsconfig.json 35 lignes · 35 lignes de code · 0 commentaires · 0 lignes vides
La configuration du compilateur TypeScript pour l'application web React de ProjectForge. Contrôle tous les aspects de la vérification de types, de la résolution de modules, de la transpilation JSX et de l'inclusion de fichiers pour la base de code frontend. Initialement ciblant ES5 avec le JSX React classique et la résolution de modules compatible CRA (node), 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.

Architecture

Paramètres clés et leur évolution

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.

Historique Git

CommitCe qui a changé
bf988bc6dTrois 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.
f867698d3Extension 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.
87c1212c2Suppression 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.
377b3e3acCré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.