Ich versuche, einen Entwickler-Server mit TypeScript und einer Angular) -Anwendung auszuführen, ohne jedes Mal ts-Dateien zu transpilieren. Ich habe festgestellt, dass ich das Ausführen mit ts-node
Ausführen kann, aber ich möchte es auch .ts
Dateien ansehen und die App/den Server neu laden, wie ich es mit so etwas wie gulp watch machen würde.
Ich kämpfte mit der gleichen Sache für meine Entwicklungsumgebung, bis ich bemerkte, dass Nodemons API es uns ermöglicht, sein Standardverhalten zu ändern, um einen benutzerdefinierten Befehl auszuführen. Ein Beispiel hierfür wäre wie folgt:
nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts
Oder noch besser und externalisieren Sie die Konfiguration von nodemon als Sandokan, der einer nodemon.json-Datei mit dem folgenden Inhalt vorgeschlagen wurde, und führen Sie dann einfach nodemon aus:
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" }
Auf diese Weise können Sie einen ts-node-Prozess live neu laden, ohne sich um die zugrunde liegende Implementierung sorgen zu müssen.
Prost!
Aktualisiert für die neueste Version von nodemon:
Ein ... kreieren nodemon.json
Datei mit folgendem Inhalt.
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./src/index.ts"
}
Ich habe nodemon
und ts-node
Zugunsten einer viel besseren Alternative ausgegeben, ts-node-dev
https://github.com/whitecolor/ts-node-dev
Führen Sie einfach ts-node-dev src/index.ts
Aus.
Hier ist eine Alternative zu den HeberLZs answer mit npm-Skripten.
Mein package.json
:
"scripts": {
"watch": "nodemon -e ts -w ./src -x npm run watch:serve",
"watch:serve": "ts-node --inspect src/index.ts"
},
-e
flag setzt die zu suchenden Erweiterungen,-w
legt das überwachte Verzeichnis fest,-x
führt das Skript aus.--inspect
in dem watch:serve
script ist eigentlich ein node.js Flag, es aktiviert nur das Debugging-Protokoll.
Speziell für diese Ausgabe habe ich das tsc-watch
Bibliothek. du findest es auf npm .
Offensichtlicher Anwendungsfall wäre:
tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"
Hinzufügen "watch": "nodemon --exec ts-node -- ./src/index.ts"
zu scripts
Abschnitt Ihres package.json
.
ich habe mit
"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts"
und Faden beginnen .. ts-Knoten nicht wie 'ts-Knoten'
sie könnten ts-node-dev verwenden
Der Zielknotenprozess wird neu gestartet, wenn eine der erforderlichen Dateien geändert wird (als Standardknoten-dev), der TypeScript-Kompilierungsprozess jedoch zwischen den Neustarts gemeinsam genutzt wird.
Installieren
yarn add ts-node-dev --dev
und Ihre package.json könnte so sein
"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"
}
Ich verwende tsmon
https://www.npmjs.com/package/tsmon es ist tief in TypeScript integriert und bietet eine inkrementelle Transpile- und Reload-Funktion.
Ich benutzte ts-node-dev
bis eines Tages bemerkte ich, dass es die Änderungen an den Schnittstellen nicht erkennen kann.
Installieren
npm install tsmon
Wechseln Sie zu Ihrem TypeScript-Projektordner
tsmon [you .ts file]