Introduction à ts-morph : qu'est-ce que c'est et pourquoi l'utiliser
ts-morph est une bibliothèque puissante pour travailler programmatiquement avec l'arbre syntaxique abstrait (AST) de TypeScript. Elle offre une API pratique et intuitive pour analyser, modifier et générer du code TypeScript. Contrairement à l'utilisation directe du compilateur TypeScript (TypeScript Compiler API), ts-morph propose une interface de plus haut niveau qui simplifie considérablement de nombreuses tâches courantes.
Pourquoi utiliser cette bibliothèque ? Imaginez que vous ayez besoin de :
- Refactoriser du code : Renommer automatiquement toutes les occurrences d'une fonction, modifier la signature d'une méthode ou déplacer une classe vers un autre fichier.
- Analyse statique : Trouver toutes les variables inutilisées, vérifier le respect des règles de codage d'entreprise ou collecter des métadonnées sur la structure du projet.
- Générer du code : Créer des types à partir d'un schéma JSON, générer des opérations CRUD pour une base de données ou ajouter automatiquement de la documentation.
- Créer des outils de développement : Écrire un plugin pour un linter, un générateur de documentation personnalisé ou un utilitaire de migration de code.
ts-morph abstrait la complexité du TypeScript Compiler API en fournissant une approche orientée objet. Vous travaillez avec des projets, des fichiers, des classes, des fonctions et d'autres éléments de code comme avec des objets ordinaires, et non avec des nœuds AST de bas niveau.
Installation de ts-morph
L'installation de la bibliothèque se fait via npm ou yarn. Elle est disponible en tant que package pour Node.js.
npm install ts-morph
ou, si vous utilisez yarn :
yarn add ts-morph
Après l'installation, vous pouvez importer la bibliothèque dans votre projet :
import { Project } from 'ts-morph';
Pour fonctionner, ts-morph nécessite TypeScript (indiqué comme peer dependency). Assurez-vous que TypeScript est installé dans votre projet :
npm install typescript
Démarrage rapide avec un exemple de code
Écrivons un script simple qui crée un nouveau fichier TypeScript, y ajoute une fonction, puis affiche le code généré.
import { Project, SyntaxKind } from 'ts-morph';
// Créer un nouveau projet
const project = new Project({
useInMemoryFileSystem: true, // Travail en mémoire, sans sauvegarde sur le disque
});
// Créer un nouveau fichier
const sourceFile = project.createSourceFile('example.ts', '');
// Ajouter une fonction
const functionDeclaration = sourceFile.addFunction({
name: 'greet',
parameters: [{ name: 'name', type: 'string' }],
returnType: 'string',
statements: [
`return \`Bonjour, \${name}!\`;`,
],
});
// Ajouter un commentaire JSDoc
functionDeclaration.addJsDoc({
description: 'Salue un utilisateur',
tags: [{ tagName: 'param', text: 'name - Le nom de l\'utilisateur' }],
});
// Afficher le code généré
console.log(sourceFile.getText());
Résultat de l'exécution du script :
/**
* Salue un utilisateur
* @param name - Le nom de l'utilisateur
*/
function greet(name: string): string {
return `Bonjour, ${name}!`;
}
Comme vous pouvez le voir, nous avons créé programmatiquement une fonction complète avec une documentation JSDoc. Ce n'est qu'un aperçu des capacités de ts-morph.
Méthodes et fonctions principales de ts-morph
Examinons 10 méthodes clés de la bibliothèque avec des descriptions détaillées et des exemples.
1. Project.createSourceFile()
Fonction : Crée un nouveau fichier source TypeScript dans le projet. Le fichier peut être vide ou contenir du code initial.
Paramètres :
filePath: string— chemin du fichier (relatif à la racine du projet).sourceText?: string— contenu initial du fichier (optionnel).overwrite?: boolean— écraser le fichier existant (par défautfalse).