Exécuter un fichier TypeScript en une seule ligne de commande
Article publié le 13/11/2023, dernière mise à jour le 13/11/2023
Vous l’aurez peut-être découvert dans notre introduction à TypeScript, exécuter des fichiers .ts peut s’avérer légèrement fastidieux (si l’on utilise pas d’outils pré-configurés), car il faut compiler le code TypeScript en code JavaScript après chaque modification, pour ensuite pouvoir l’exécuter…
Mais si vous souhaitez exécuter du TypeScript côté serveur, c’est beaucoup plus simple !
Dans un environnement NodeJS, il vous suffira d’une commande très simple pour exécuter votre fichier, comme ceci :
npx ts-node index.ts
Les dessous de la commande
Voyons ensemble les outils utilisés par cette commande, qui exécute votre code TypeScript de manière très transparente (et un peu magique).
npx
Même si vous ne connaissez pas la commande npx
, vous connaissez forcément NPM, le gestionnaire de paquet qui vient avec NodeJS !
Et bien
npx
est une commande installée par défaut avec NPM (>5.2.0)
Elle permet d’exécuter la commande issue de n’importe quel paquet NPM, et d’installer toutes les dépendances nécessaires (si elles ne sont pas déjà installées).
Voilà ce qu’il se passe :
- On passe la commande ts-node (et le paramètre index.ts) à npx
- npx vérifie si le binaire de la commande est présent dans le dossier node_modules local ET le node_modules global au système
- Si la commande est introuvable, npx va installer les dépendances nécessaires
- Une fois les dépendances installées, npx exécute la commande
Cet utilitaire, en plus de simplifier le processus d’exécution, permet également de palier à certains problèmes d’ajout des chemins à la variable PATH (notamment sous Windows)
ts-node
Ce module est un moteur d’exécution qui permet de faire de la transpilation JIT (just-in-time) de TypeScript vers JavaScript, ce qui permet d’exécuter des fichiers .ts « directement » dans NodeJS, sans pré-compilation !
L’avantage de cette solution, c’est que cela ne fonctionne pas seulement pour vos scripts, mais ts-node va transpiler « à la volée » tous les modules importés via require ou import.
Il est même possible de simplement exécuter
Aucun commentaire pour l'instant