Je cherche un moyen d'utiliser des scripts npm pour exécuter tsc --watch && nodemon --watch
en même temps. Je peux exécuter ces commandes indépendamment, mais lorsque je veux les exécuter toutes les deux, seule la première est exécutée. par exemple. si j'ai ce script:
"scripts": {
"runDeb": "set NODE_ENV=development&& tsc --watch && nodemon --watch"
}
tsc --watch
est exécuté mais nodemon
n'est jamais appelé, et vice versa.
Je pense que ce que vous voulez est quelque chose comme ça (ma configuration actuelle):
"scripts": {
"compile": "tsc && node app.js",
"dev": "./node_modules/nodemon/bin/nodemon.js -e ts --exec \"npm run compile\""
}
J'ai créé deux scripts "compile" et "dev". Pour commencer à développer, exécutez simplement npm run dev
qui démarre nodemon et lui fait regarder les fichiers .ts (en utilisant le -e
drapeau). Ensuite, chaque fois qu'un fichier .ts change, nodemon exec
la tâche de compilation qui compile et exécute essentiellement l'application de nœud.
Bien que l'utilisation simultanée soit une bonne option, ma configuration garantit que le travail de tsc
est terminé avant d'essayer d'exécuter les fichiers .js résultants.
J'utilise la solution d'AlterX depuis un certain temps maintenant et cela a parfaitement fonctionné, mais je l'ai trouvée assez lente. Au lieu de cela, j'utilise maintenant tsc-watch . Il fait utiliser à tsc une compilation incrémentielle similaire à -w
flag, ce qui accélère le redémarrage de l'application.
C'est aussi simple que de mettre quelque chose de similaire à ceci dans votre package.json:
"scripts": {
"start": "./node_modules/.bin/tsc-watch --onSuccess \"node .\""
}
Essayez d'ajouter ceci à votre package.json:
"scripts": {
"start": "concurrently --kill-others \"tsc -w\" \"nodemon dist/app.js\"",
}
Et ajoutez également ces packages npm (simultanément, nodemon, TypeScript) à votre package.json:
"devDependencies": {
"concurrently": "^2.2.0",
"TypeScript": "^1.8.10",
"nodemon": "^1.9.2",
}
Ma solution en octobre 2018 en utilisant les dernières versions de nodemon.
d'abord:
installez nodemon
(npm install nodemon --save-dev
) et ts-node
(npm install ts-node --save-dev
)
seconde:
créer un nodemon.json
. J'aime garder ma configuration nodemon dans un seperat nodemon.json pour rendre les scripts npm un peu plus faciles à lire. Alors créez nodemon.json
à la racine du projet avec le contenu suivant:
{
"ignore": ["**/*.test.ts", "**/*.spec.ts", ".git", "node_modules"],
"watch": ["src"], // your .ts src folder
"exec": "npm start", // your npm script created in package.json
"ext": "ts"
}
puis créez votre npm start
script par exemple comme ceci:
"scripts": {
...
"start": "ts-node src/server.ts",
"dev:ts": "nodemon",
...
}
Exécutez ensuite npm run dev:ts
ou yarn dev:ts
devrait s'exécuter et surveiller votre code serveur TypeScript.
Pour plus de configurations comme Jest
tests unitaires etc ... vous pouvez jeter un oeil à l'article this
Le TypeScript-Node-Starter
est rapide
https://github.com/Microsoft/TypeScript-Node-Starter/blob/master/package.json
"dev": "concurrently -k -n \"TypeScript,Node\" -c \"yellow.bold,cyan.bold\" \"npm run watch-ts\" \"nodemon ./dist/app.js\"",
"watch-ts": "tsc -w"
Ici, nous donnons npm run watch-ts
le nom TypeScript
(en utilisant concurrently -n
) et en ajoutant la couleur yellow.bold
en utilisant le concurrently -c
.
Ainsi, je peux reconnaître assez facilement les messages pour chaque processus.
Le problème est qu'il y a deux observateurs ici sur tous les fichiers. L'un est tsc -w
et l'un est nodemon
.
Lorsqu'un changement vers un .ts
le fichier est créé, tsc
le détecte, le compile et crée le .js
version dans votre dossier de destination.
Du point de vue du Nodemon, il détecte deux changements (au moins) - un pour .ts
et un pour .js
. Au premier changement, il redémarre lui-même, mais au deuxième changement, il ne sait pas qu'un autre "démarrage" est déjà en cours, il essaie donc de redémarrer à nouveau et il échoue. Pour moi, c'est un bug nodemon - voir https://github.com/remy/nodemon/issues/76 .
tsc-watch --onSuccess
tsc-watch a --onSuccess
que vous pouvez mettre node
dessus. De cette façon, vous aurez seulement un observateur.
Vous pouvez facilement retarder le redémarrage de nodemon (Voir - delay ). Il nécessite le moins de changement de configuration.
Je n'ai pas pu le configurer, mais de cette façon nodemon
ne détectera qu'un seul changement, espérons-le. Cela pourrait causer des problèmes à l'avenir ou lorsque tsc génère plusieurs fichiers.