Wie kann ich Visual Studio Code so konfigurieren, dass beim Speichern Typoskriptdateien kompiliert werden?
Ich sehe, dass es möglich ist, eine Aufgabe zu konfigurieren, um die Datei im Fokus mit dem ${file}
als Argument zu erstellen . Aber ich möchte, dass dies getan wird, wenn eine Datei gespeichert wird.
typescript
visual-studio-code
Powell Quiring
quelle
quelle
tsc <filename> --watch
im TerminalAntworten:
Update Mai 2018:
Ab Mai 2018 müssen Sie den
tsconfig.json
Task Runner nicht mehr manuell erstellen oder konfigurieren.tsc --init
in Ihrem Projektordner aus, um einetsconfig.json
Datei zu erstellen (falls Sie noch keine haben).tsc: watch - tsconfig.json
.Sie können mehrere
tsconfig.json
Dateien in Ihrem Arbeitsbereich haben und mehrere Kompilierungen gleichzeitig ausführen, wenn Sie möchten (z. B. Frontend und Backend getrennt).Ursprüngliche Antwort:
Sie können dies mit Build-Befehlen tun:
Erstellen Sie eine einfache
tsconfig.json
mit"watch": true
(dies weist den Compiler an, alle kompilierten Dateien anzusehen):Beachten Sie, dass das
files
Array weggelassen wird. Standardmäßig werden alle*.ts
Dateien in allen Unterverzeichnissen kompiliert. Sie können andere Parameter angeben odertarget
/ ändern. Stellen Sieout
einfach sicher, dass diesewatch
Option auf eingestellt isttrue
.Konfigurieren Sie Ihre Aufgabe ( Ctrl+Shift+P->
Configure Task Runner
):Drücken Sie nun Ctrl+Shift+B, um das Projekt zu erstellen. Sie sehen die Compilerausgabe im Ausgabefenster ( Ctrl+Shift+U).
Der Compiler kompiliert Dateien beim Speichern automatisch. Um die Kompilierung zu beenden, drücken Sie Ctrl+P->
> Tasks: Terminate Running Task
Ich habe speziell für diese Antwort eine Projektvorlage erstellt:
typescript-node-basic
quelle
configure task
: VSCode erkennt automatisch, dass es einen gibt,tsconfig.json
und fordert einen Dialog auf, in dem Sie entwedertsc: build - tsconfig.json
oder auswählen könnentsc: watch - tsconfig.json
. Wählen Sie Letzteres und VSCode generiert dietasks.json
Datei (falls noch keine vorhanden war) und fügt die richtige Konfiguration für Sie hinzu.Wenn Sie vermeiden möchten, dass
CTRL
+SHIFT
+ verwendet werden muss,B
und dies stattdessen jedes Mal auftreten soll, wenn Sie eine Datei speichern, können Sie den Befehl an dieselbe Verknüpfung wie die Speicheraktion binden:Dies geht in Ihre keybindings.json - (gehen Sie dazu mit Datei -> Einstellungen -> Tastaturkürzel).
quelle
when
BedingungeditorLangId
von Bedeutung.Wenn das Drücken von Ctrl+ Shift+ Bein großer Aufwand ist, können Sie "Auto Save" (Datei> Auto Save) aktivieren und mit NodeJS alle Dateien in Ihrem Projekt überwachen und TSC automatisch ausführen.
Öffnen Sie eine Node.JS-Eingabeaufforderung, wechseln Sie in das Verzeichnis Ihres Projektstammordners und geben Sie Folgendes ein:
Und hey Presto, jedes Mal, wenn VS Code die Datei automatisch speichert, kompiliert TSC sie neu.
Diese Technik wird in einem Blogbeitrag erwähnt.
http://www.typescriptguy.com/getting-started/angularjs-typescript/
Scrollen Sie nach unten zu "Beim Speichern kompilieren"
quelle
Schreiben Sie eine Erweiterung
Jetzt, da vscode erweiterbar ist, ist es möglich, sich über eine Erweiterung in das Ereignis on save einzubinden. Eine gute Übersicht über das Schreiben von Erweiterungen für VSCode finden Sie hier: https://code.visualstudio.com/docs/extensions/overview
Hier ist ein einfaches Beispiel, das nur
echo $filepath
stdout in einem Nachrichtendialog aufruft und ausgibt:(Wird auch in dieser SO-Frage erwähnt: https://stackoverflow.com/a/33843805/20489 )
Bestehende VSCode-Erweiterung
Wenn Sie nur eine vorhandene Erweiterung installieren möchten, finden Sie hier eine, die ich in der VSCode-Galerie geschrieben habe: https://marketplace.visualstudio.com/items/emeraldwalk.RunOnSave
Der Quellcode ist hier verfügbar: https://github.com/emeraldwalk/vscode-runonsave/blob/master/src/extension.ts
quelle
Ich habe mich sehr bemüht, das gewünschte Verhalten zu erreichen. Dies ist der einfachste und beste Weg, um TypeScript-Dateien beim Speichern zu kompilieren. In der gewünschten Konfiguration wird nur DIESE Datei (die gespeicherte Datei) verwendet. Es ist eine task.json und eine keybindings.json.
quelle
{ "version": "0.1.0", "command": "tsc", "isShellCommand": true, "args": ["--module","amd","--target","ES5","${file}"], "showOutput": "silent", "problemMatcher": "$tsc" }
Keybingings:{ "key": "cmd+s", "command": "workbench.action.tasks.build", "when":"editorTextFocus && editorLangId == 'typescript'" }
Anstatt eine einzelne Datei zu erstellen und Strg + S zu binden, um diesen Build auszulösen, würde ich empfehlen, tsc im Überwachungsmodus mit der folgenden Datei task.json zu starten:
Dadurch wird einmal das gesamte Projekt erstellt und anschließend die gespeicherten Dateien neu erstellt, unabhängig davon, wie sie gespeichert werden (Strg + S, automatisches Speichern, ...).
quelle
Aktualisiert
In deinem
tsconfig.json
Wenn das Problem weiterhin besteht, führen Sie einen der folgenden Schritte aus:
Starten Sie Ihren Editor neu oder ändern Sie eine Route, setzen Sie sie zurück und speichern Sie die Anwendung. Es wird mit dem Kompilieren beginnen. dh
quelle
Ich habe die Kompilierung beim Speichern mit der Gulp-Aufgabe mithilfe von Gulp-Typoskript und inkrementellem Build implementiert . Auf diese Weise können Sie die Kompilierung beliebig steuern. Beachten Sie meine Variable tsServerProject. In meinem realen Projekt habe ich auch tsClientProject, da ich meinen Clientcode ohne angegebenes Modul kompilieren möchte. Wie ich weiß, kann man das nicht mit vs Code machen.
quelle
Wählen Sie Einstellungen -> Arbeitsbereichseinstellungen und fügen Sie den folgenden Code hinzu: Wenn Sie Hot Reload aktiviert haben, werden die Änderungen sofort im Browser angezeigt
quelle
Aktueller Status dieser Ausgabe:
https://github.com/Microsoft/vscode/issues/7015
quelle
Ich kann sagen, dass mit der neuesten Version von TypeScript 1.8.X und 1.0 von Visual Studio-Code die von mir gezeigte Technik veraltet ist. Verwenden Sie einfach eine tsconfig.json auf der Stammebene Ihres Projekts und alles funktioniert automatisch für die Syntaxprüfung. Verwenden Sie dann tsc -w in der Befehlszeile, um automatisch zu sehen / neu zu kompilieren. Es wird dieselbe tsconfig.json-Datei für Optionen und Konfiguration von ts compile gelesen.
quelle
Eine äußerst einfache Möglichkeit zum automatischen Kompilieren beim Speichern besteht darin, Folgendes in das Terminal einzugeben:
tsc main --watch
Wo
main.ts
ist dein Dateiname?Beachten Sie, dass dies nur ausgeführt wird, solange dieses Terminal geöffnet ist. Es handelt sich jedoch um eine sehr einfache Lösung, die ausgeführt werden kann, während Sie ein Programm bearbeiten.
quelle
tsc -w
funktioniert auch für alle Typoskriptdateien im ProjektSie müssen das Überwachungslimit erhöhen, um das Problem beim erneuten Kompilieren beim Speichern zu beheben. Öffnen Sie das Terminal und geben Sie die beiden folgenden Befehle ein:
Führen Sie diesen Befehl auch aus, um die Änderungen auch nach dem Neustart beizubehalten:
quelle
Ich habe die oben genannten Methoden ausprobiert, aber meine hat die automatische Kompilierung gestoppt, als es sich anfühlte, da die maximale Anzahl der zu beobachtenden Dateien das Limit überschritten hat.
cat /proc/sys/fs/inotify/max_user_watches
Befehl ausführen .Wenn weniger Dateien einschließlich node_modules angezeigt werden, öffnen Sie die Datei
/etc/sysctl.conf
mit dem Root-Privileg und hängen Sie sie anfs.inotify.max_user_watches=524288
in die Datei und speichernFühren Sie den Befehl cat erneut aus, um das Ergebnis anzuzeigen. Es wird klappen! hoffnungsvoll!
quelle
Ich verwende automatische Aufgaben, die in einem Ordner (sollte VSCode> = 1.30 funktionieren) in .vscode / task.json ausgeführt werden
Wenn dies beim Öffnen des Projektordners immer noch nicht funktioniert, versuchen Sie es mit Strg + Umschalt + P und Aufgaben: Automatische Aufgaben im Ordner verwalten und wählen Sie "Automatische Aufgaben im Ordner zulassen" im Hauptprojektordner oder im laufenden Ordner.
quelle