web-dev-qa-db-fra.com

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

J'essaie d'exécuter un serveur de développement avec TypeScript et une application Angular sans transpiler des fichiers ts à chaque fois. J'ai découvert que je pouvais courir avec ts-node mais je souhaitais également regarder les fichiers .ts et recharger l'application/serveur comme je le ferais avec quelque chose comme gulp watch.

116
Ieltxu Algañarás

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 externalisez la configuration de nodemon lorsque Sandokan a été converti dans un fichier nodemon.json avec le contenu suivant, puis exécutez simplement nodemon:

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

Ainsi, vous pourrez recharger en direct un processus ts-node sans avoir à vous soucier de la mise en œuvre sous-jacente.

À votre santé!

Mise à 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"
}
256
HeberLZ

J'ai jeté nodemon et ts-node en faveur d'une bien meilleure alternative, ts-node-devhttps://github.com/whitecolor/ts-node-dev

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

45
Mikael Couzic

Voici une alternative au answer de HeberLZ, en utilisant les 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"
  },
  • Le drapeau -e 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 n'active que le protocole de débogage.

44
im.pankratov

Pour ce problème spécifiquement, j'ai créé la bibliothèque tsc-watch. vous pouvez le trouver sur npm .

Le cas d'utilisation évident serait:

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

8
gilamran

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

7
TakaSoft

j'ai fait avec

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

et le début du fil .. ts-noeud pas comme 'ts-noeud'

2

vous pouvez utiliser ts-node-dev

Il redémarre le processus de noeud cible lorsque l'un des fichiers requis change (en tant que node-dev standard), mais partage le processus de compilation TypeScript entre les redémarrages.

Installer

yarn add ts-node-dev --dev

et votre package.json pourrait être comme ça

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "tsc": "tsc",
  "dev": "ts-node-dev --respawn --transpileOnly ./src/index.ts",
  "prod": "tsc && node ./build/index.js"
}
2
jsina

J'utilise tsmonhttps://www.npmjs.com/package/tsmon il est profondément intégré à TypeScript et fournit une fonctionnalité incrémentielle de transfert et de rechargement.

J'utilisais ts-node-dev jusqu'au jour où j'ai remarqué qu'il ne pouvait pas détecter les modifications apportées aux interfaces.

Installer

npm install tsmon

Accédez au dossier de votre projet TypeScript.

tsmon [you .ts file]
0
Ling