Comment gérer des projets TypeScript avec tsconfig

La gestion efficace des projets TypeScript est essentielle pour maintenir la qualité et la cohérence du code. Le fichier tsconfig.json est un élément central de la configuration et de la gestion des projets TypeScript. Il permet aux développeurs de spécifier diverses options de compilation, des inclusions de fichiers, des exclusions et bien plus encore. Ce guide explique comment utiliser tsconfig.json pour gérer efficacement les projets TypeScript.

Qu'est-ce que tsconfig.json ?

Le fichier tsconfig.json est un fichier de configuration utilisé par le compilateur TypeScript (tsc) pour déterminer comment un projet TypeScript doit être compilé. Il fournit un moyen standard de spécifier les options du compilateur et les fichiers qui font partie du projet. Lorsqu'un fichier tsconfig.json est présent dans un répertoire, il marque ce répertoire comme racine d'un projet TypeScript.

Création d'un fichier tsconfig.json

Pour créer un fichier tsconfig.json, exécutez la commande suivante dans le terminal:

tsc --init

Cette commande génère un fichier tsconfig.json par défaut avec un ensemble d'options prédéfinies. Le fichier généré peut être personnalisé pour répondre aux besoins spécifiques du projet.

Comprendre les propriétés de base de tsconfig.json

Le fichier tsconfig.json contient plusieurs propriétés qui peuvent être personnalisées pour mieux gérer le projet TypeScript. Voici quelques-unes des propriétés les plus couramment utilisées:

  • compilerOptions: Spécifie les options du compilateur pour le projet.
  • include: Spécifie les fichiers ou répertoires à inclure dans le projet.
  • exclude: Spécifie les fichiers ou répertoires à exclure du projet.
  • fichiers: Spécifie les fichiers individuels à inclure dans le projet.

Configuration des options du compilateur

La propriété compilerOptions ​​est la section la plus importante du fichier tsconfig.json. Elle permet aux développeurs de contrôler divers aspects du processus de compilation. Vous trouverez ci-dessous quelques options de compilation couramment utilisées:

{
  "compilerOptions": {
    "target": "ES6",               // Specifies the target JavaScript version
    "module": "commonjs",          // Specifies the module system
    "strict": true,                // Enables all strict type-checking options
    "outDir": "./dist",            // Redirects output structure to the directory
    "rootDir": "./src",            // Specifies the root directory of input files
    "esModuleInterop": true,       // Enables emit interoperability between CommonJS and ES Modules
    "forceConsistentCasingInFileNames": true // Disallows inconsistently-cased references to the same file
  }
}

Ces options peuvent être personnalisées en fonction des exigences du projet. Par exemple, si vous remplacez target par ES5, le code JavaScript sera compatible avec les navigateurs plus anciens.

Inclure et exclure des fichiers

Dans un projet TypeScript, il est important de contrôler quels fichiers sont inclus ou exclus lors de la compilation. Les propriétés include et exclude dans tsconfig.json sont utilisées à cette fin.

{
  "include": ["src/**/*"],    // Includes all TypeScript files in the src folder
  "exclude": ["node_modules", "**/*.spec.ts"] // Excludes node_modules and all spec files
}

La configuration ci-dessus inclut tous les fichiers TypeScript du répertoire src et ses sous-répertoires tout en excluant les fichiers du répertoire node_modules ​​et les fichiers avec une extension .spec.ts.

Utilisation de la propriété files

La propriété files ​​est utilisée pour inclure des fichiers individuels dans la compilation. Cela peut être utile lorsque seul un ensemble spécifique de fichiers doit être compilé.

{
  "files": ["src/index.ts", "src/app.ts"]
}

Dans cet exemple, seuls les fichiers index.ts ​​et app.ts ​​du répertoire src seront compilés.

Extension des fichiers tsconfig

TypeScript permet d'étendre d'autres fichiers tsconfig.json à l'aide de la propriété extends. Cela est utile pour partager une configuration de base commune entre plusieurs projets ou sous-projets.

{
  "extends": "./base.tsconfig.json",
  "compilerOptions": {
    "outDir": "./dist"
  }
}

Dans cet exemple, le fichier tsconfig.json actuel étend le fichier base.tsconfig.json et remplace l'option outDir.

Conclusion

La gestion des projets TypeScript avec tsconfig.json offre une grande flexibilité et un meilleur contrôle du processus de compilation. En comprenant et en utilisant les différentes propriétés de tsconfig.json, telles que compilerOptions, include, exclude et files, les projets TypeScript peuvent être gérés de manière plus efficace. La possibilité d'étendre les fichiers tsconfig permet également une meilleure organisation et réutilisation des projets.