wake-up-neo.com

Wie Sie ts-node beobachten und neu laden, wenn sich TypeScript-Dateien ändern

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.

116

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

Ich habe nodemon und ts-node Zugunsten einer viel besseren Alternative ausgegeben, ts-node-devhttps://github.com/whitecolor/ts-node-dev

Führen Sie einfach ts-node-dev src/index.ts Aus.

45
Mikael Couzic

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.

44
im.pankratov

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"

8
gilamran

Hinzufügen "watch": "nodemon --exec ts-node -- ./src/index.ts" zu scripts Abschnitt Ihres package.json.

7
TakaSoft

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"
}
2
jsina

Ich verwende tsmonhttps://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]
0
Ling