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.
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"
}
J'ai jeté nodemon
et ts-node
en faveur d'une bien meilleure alternative, ts-node-dev
https://github.com/whitecolor/ts-node-dev
Il suffit de lancer ts-node-dev src/index.ts
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"
},
-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.
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"
Ajoutez "watch": "nodemon --exec ts-node -- ./src/index.ts"
à la section scripts
de votre package.json
.
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'
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"
}
J'utilise tsmon
https://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]