EDIT: mis à jour pour la dernière version de nodemon!
J'avais du mal avec la même chose pour mon environnement de développement jusqu'à ce que je remarque que nodemon
l'API de nous permet de changer son comportement par défaut afin d'exécuter une commande personnalisée. Par exemple:
nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts
Ou encore mieux: extériorisez la configuration de nodemon dans un nodemon.json
fichier avec le contenu suivant, puis exécutez simplement nodemon
, comme Sandokan l'a suggéré:
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" }
En faisant cela, vous serez en mesure de recharger en direct un ts-node
processus sans avoir à vous soucier de l'implémentation sous-jacente.
À votre santé!
Mise à jour pour la version la plus récente de nodemon:
Vous pouvez exécuter ceci, par exemple:
nodemon --watch "src/**" --ext "ts,json" --ignore "src/**/*.spec.ts" --exec "ts-node src/index.ts"
Ou créez un nodemon.json
fichier avec le contenu suivant:
{
"watch": ["src"],
"ext": "ts,json",
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./src/index.ts" // or "npx ts-node src/index.ts"
}
puis exécutez nodemon
sans arguments.
index.ts
est une instance express, comment puis-je la tuer et la redémarrer{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./app-server.ts" }
et tapez simplementnodemon
./
avant les noms de dossier et ça s'est cassé. Cela a fonctionné pour moi:{ "verbose": true, "watch": ["server/**/*.ts"], "ext": "ts js json", "ignore": ["server/**/*.spec.ts"], "exec": "ts-node index.ts" }
. Et ligne de commande:nodemon --watch server/**/*.ts --ignore server/**/*.spec.ts --verbose --exec ts-node index.ts
ext
dans le fichier de configuration, de sorte que son look pour ts change. Mon fichier de configuration ressemble à ceci:{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "ext": "ts js json", "_exec": "node dist/startup.js", "exec": "ts-node src/startup.ts" }
J'ai abandonné
nodemon
etts-node
en faveur d'une bien meilleure alternative,ts-node-dev
https://github.com/whitecolor/ts-node-devCourez
ts-node-dev src/index.ts
la source
tsc --watch
.nodemon
qu'avects-node
. Merci!"start": "ts-node-dev src"
. Pas besoin de babel, nodemon ou l'une des configurations qui l'accompagne. Tout est géré pour vous.Voici une alternative à l'HeberLZ réponse , en utilisant des scripts MNP.
Mon
package.json
:"scripts": { "watch": "nodemon -e ts -w ./src -x npm run watch:serve", "watch:serve": "ts-node --inspect src/index.ts" },
-e
flag définit les extensions à rechercher,-w
définit le répertoire surveillé,-x
exécute le script.--inspect
dans lewatch:serve
script est en fait un indicateur node.js, il active simplement le protocole de débogage.la source
ts-node --inspect -- src/index.ts
maintenant à cause de cela .-e ts -w ./src
a fait l'affaire pour moi - cela a fonctionné avec un projet généré par CLI loopback4Cela fonctionne pour moi:
Apparemment grâce à depuis cette pull request: https://github.com/remy/nodemon/pull/1552
la source
ts-node
installé.node_modules/
? Pour moi, cela échoue si je ne l'ai pas.ts-node
en effet d'être installé. L'exécution de cette commande sansts-node
entraînera unefailed to start process, "ts-node" exec not found
erreur. Vous aviez probablement cela comme un artefact résiduelnode_modules
. Cela étant dit, cette solution est beaucoup plus agréable car elle ne nécessite pas de configuration supplémentaire.npm install -g ts-node
Spécifiquement pour ce problème, j'ai créé la
tsc-watch
bibliothèque. vous pouvez le trouver sur npm .Le cas d'utilisation évident serait:
tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"
la source
"[...] similar to nodemon but for TypeCcript."
:)Ajouter
"watch": "nodemon --exec ts-node -- ./src/index.ts"
à lascripts
section de votrepackage.json
.la source
vous pouvez utiliser ts-node-dev
Il redémarre le processus du nœud cible lorsque l'un des fichiers requis change (comme standard node-dev) mais partage le processus de compilation Typescript entre les redémarrages.
Installer
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" }
la source
j'ai fait avec
"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts"
et yarn start .. ts-node pas comme 'ts-node'
la source
Je préférerais ne pas utiliser ts-node et toujours courir à partir du dossier dist.
Pour ce faire, configurez simplement votre package.json avec la configuration par défaut:
.... "main": "dist/server.js", "scripts": { "build": "tsc", "prestart": "npm run build", "start": "node .", "dev": "nodemon" }, ....
puis ajoutez le fichier de configuration nodemon.json :
{ "watch": ["src"], "ext": "ts", "ignore": ["src/**/*.spec.ts"], "exec": "npm restart" }
Ici, j'utilise "exec": "npm restart"
pour que tous les fichiers ts soient recompilés en fichier js, puis redémarrent le serveur.
Pour s'exécuter dans un environnement de développement,
En utilisant cette configuration, je vais toujours courir à partir des fichiers distribués et je n'ai pas besoin de ts-node.
la source
ajoutez ceci à votre fichier package.json
scripts { "dev": "nodemon --watch '**/*.ts' --exec 'ts-node' index.ts" }
et pour que cela fonctionne, vous devez également installer ts-node en tant que dev-dependency
exécuter
yarn dev
pour démarrer le serveur de développementla source
Une autre façon pourrait être de compiler le code d'abord en mode montre avec
tsc -w
, puis d'utiliser nodemon sur javascript. Cette méthode est similaire en vitesse à ts-node-dev et présente l'avantage d'être plus proche de la production."scripts": { "watch": "tsc -w", "dev": "nodemon dist/index.js" },
la source