Comment regarder et recharger ts-node lorsque les fichiers TypeScript changent

J’essaie d’exécuter un serveur de développement avec TypeScript et une application Angular sans transstackr les fichiers ts à chaque fois. J’ai trouvé que je pouvais faire tourner avec ts-node mais je veux aussi regarder les fichiers .ts et recharger l’application / le serveur comme je le ferais avec quelque chose comme gulp watch.

Je me débattais avec la même chose pour mon environnement de développement jusqu’à ce que je remarque que l’API de nodemon nous permet de modifier son comportement par défaut afin d’exécuter une commande personnalisée. Un exemple de ceci serait comme suit:

 nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts 

Ou encore mieux et extérioriser la configuration de nodemon en Sandokan dans un fichier nodemon.json avec le contenu suivant, puis exécuter simplement nodemon:

 { "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" } 

En faisant cela, vous pourrez recharger en direct un processus ts-node sans vous soucier de l’implémentation sous-jacente.

À votre santé!

Mis à jour pour la version la plus récente de nodemon:

Créez un fichier nodemon.json avec le contenu suivant.

 { "watch": ["src"], "ext": "ts", "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./src/index.ts" } 

Voici une alternative à la réponse de HeberLZ, utilisant des scripts npm.

Mon package.json :

  "scripts": { "watch": "nodemon -e ts -w ./src -x npm run watch:serve", "watch:serve": "ts-node --inspect src/index.ts" }, 
  • -e drapeau définit les extensions à rechercher,
  • -w définit le répertoire surveillé,
  • -x exécute le script.

--inspect dans le script watch:serve est en fait un indicateur node.js, il active simplement le protocole de débogage.

Plus précisément pour ce problème, j’ai créé la bibliothèque tsc-watch . vous pouvez le trouver sur npm .

Cas d’utilisation évident serait:

tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.ts"

J’ai vidé nodemon et ts-node en faveur d’une alternative bien meilleure, ts-node-dev https://github.com/whitecolor/ts-node-dev

Il suffit de lancer ts-node-dev src/index.ts

Ajoutez "watch": "nodemon --exec ts-node -- ./src/index.ts" à la section scripts de votre package.json .