Comment puis-je configurer Visual Studio Code pour compiler des fichiers dactylographiés lors de l'enregistrement?
Je vois qu'il est possible de configurer une tâche pour créer le fichier en focus en utilisant le ${file}
comme argument. Mais j'aimerais que cela soit fait lorsqu'un fichier est enregistré.
typescript
visual-studio-code
Powell Quiring
la source
la source
tsc <filename> --watch
le terminalRéponses:
Mise à jour de mai 2018:
Depuis mai 2018, vous n'avez plus besoin de créer
tsconfig.json
manuellement ou de configurer le gestionnaire de tâches.tsc --init
dans votre dossier de projet pour créer untsconfig.json
fichier (si vous n'en avez pas déjà un).tsc: watch - tsconfig.json
.Vous pouvez avoir plusieurs
tsconfig.json
fichiers dans votre espace de travail et exécuter plusieurs compilations à la fois si vous le souhaitez (par exemple frontend et backend séparément).Réponse originale:
Vous pouvez le faire avec les commandes de construction:
Créez un simple
tsconfig.json
avec"watch": true
(cela demandera au compilateur de regarder tous les fichiers compilés):Notez que
files
tableau est omis, par défaut tous les*.ts
fichiers de tous les sous-répertoires seront compilés. Vous pouvez fournir d'autres paramètres ou modifiertarget
/out
, assurez-vous simplement qu'ilwatch
est défini surtrue
.Configurez votre tâche ( Ctrl+Shift+P->
Configure Task Runner
):Maintenant, appuyez sur Ctrl+Shift+Bpour créer le projet. Vous verrez la sortie du compilateur dans la fenêtre de sortie ( Ctrl+Shift+U).
Le compilateur compilera automatiquement les fichiers une fois enregistrés. Pour arrêter la compilation, appuyez sur Ctrl+P->
> Tasks: Terminate Running Task
J'ai créé un modèle de projet spécifiquement pour cette réponse:
typescript-node-basic
la source
configure task
: VSCode détecte automatiquement qu'il existe untsconfig.json
et affiche une boîte de dialogue dans laquelle vous pouvez choisir entretsc: build - tsconfig.json
outsc: watch - tsconfig.json
. Choisissez ce dernier et VSCode génère letasks.json
fichier (s'il n'y en avait pas auparavant) et ajoute la bonne configuration pour vous.Si vous voulez éviter d'avoir à utiliser
CTRL
+SHIFT
+B
et que vous souhaitez que cela se produise à chaque fois que vous enregistrez un fichier, vous pouvez lier la commande au même raccourci que l'action d'enregistrement:Cela va dans votre keybindings.json - (dirigez-vous vers cela en utilisant Fichier -> Préférences -> Raccourcis clavier).
la source
when
condition d'utilisationeditorLangId
est d'importation.Si appuyer sur Ctrl+ Shift+ Bvous demande beaucoup d'efforts, vous pouvez activer "Auto Save" (Fichier> Auto Save) et utiliser NodeJS pour regarder tous les fichiers de votre projet, et lancer TSC automatiquement.
Ouvrez une invite de commande Node.JS, changez de répertoire dans le dossier racine de votre projet et tapez ce qui suit;
Et bon, à chaque fois que VS Code enregistre automatiquement le fichier, TSC le recompilera.
Cette technique est mentionnée dans un article de blog;
http://www.typescriptguy.com/getting-started/angularjs-typescript/
Faites défiler jusqu'à "Compiler lors de l'enregistrement"
la source
Écrire une extension
Maintenant que vscode est extensible, il est possible de se connecter à l'événement on save via une extension. Un bon aperçu de l'écriture d'extensions pour VSCode peut être trouvé ici: https://code.visualstudio.com/docs/extensions/overview
Voici un exemple simple qui appelle
echo $filepath
et génère simplement stdout dans un dialogue de message:(Également référencé sur cette question SO: https://stackoverflow.com/a/33843805/20489 )
Extension VSCode existante
Si vous souhaitez simplement installer une extension existante, en voici une que j'ai écrite disponible dans la galerie VSCode: https://marketplace.visualstudio.com/items/emeraldwalk.RunOnSave
Le code source est disponible ici: https://github.com/emeraldwalk/vscode-runonsave/blob/master/src/extension.ts
la source
J'ai énormément lutté pour obtenir le comportement que je voulais. C'est le moyen le plus simple et le meilleur d'obtenir des fichiers TypeScript à compiler lors de l'enregistrement, dans la configuration que je veux, uniquement CE fichier (le fichier enregistré). C'est un tasks.json et un keybindings.json.
la source
{ "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'" }
Au lieu de créer un seul fichier et de lier Ctrl + S pour déclencher cette construction, je recommanderais de démarrer tsc en mode veille à l'aide du fichier tasks.json suivant:
Cela créera une fois l'ensemble du projet, puis reconstruira les fichiers qui seront enregistrés indépendamment de la façon dont ils sont enregistrés (Ctrl + S, sauvegarde automatique, ...)
la source
Actualisé
Dans votre
tsconfig.json
si le problème persiste, effectuez l'une des opérations suivantes:
Redémarrez votre éditeur ou modifiez n'importe quel itinéraire, rétablissez-le et enregistrez l'application. Il va commencer la compilation. c'est à dire
la source
J'ai implémenté la compilation lors de l'enregistrement avec la tâche gulp en utilisant gulp-typescript et la construction incrémentielle. Cela permet de contrôler la compilation comme vous le souhaitez. Remarquez ma variable tsServerProject, dans mon projet réel j'ai également tsClientProject car je veux compiler mon code client sans aucun module spécifié. Comme je le sais, vous ne pouvez pas le faire avec vs code.
la source
Sélectionnez Préférences -> Paramètres de l'espace de travail et ajoutez le code suivant.Si vous avez activé le rechargement à chaud, les modifications se reflètent immédiatement dans le navigateur.
la source
État actuel de ce problème:
https://github.com/Microsoft/vscode/issues/7015
la source
Je peux dire qu'avec la dernière version de TypeScript 1.8.X et 1.0 du code Visual Studio, la technique que j'ai montrée est obsolète. Utilisez simplement un tsconfig.json au niveau racine de votre projet et tout fonctionne automatiquement pour la vérification de la syntaxe. Ensuite, utilisez tsc -w sur la ligne de commande pour regarder / recompiler automatiquement. Il lira le même fichier tsconfig.json pour les options et la configuration de ts compile.
la source
Un moyen extrêmement simple de compiler automatiquement lors de l'enregistrement consiste à taper ce qui suit dans le terminal:
tsc main --watch
où
main.ts
est votre nom de fichier.Notez que cela ne fonctionnera que tant que ce terminal est ouvert, mais c'est une solution très simple qui peut être exécutée pendant que vous éditez un programme.
la source
tsc -w
fonctionne également pour tous les fichiers dactylographiés du projetVous devez augmenter la limite de montres pour résoudre le problème de recompilation lors de l'enregistrement, ouvrez le terminal et entrez ces deux commandes:
Pour rendre les modifications persistantes même après le redémarrage, exécutez également cette commande:
la source
J'ai essayé les méthodes ci-dessus, mais la mienne a arrêté la compilation automatique quand il en avait envie, car le nombre maximum de fichiers à surveiller avait dépassé la limite.
exécuter la
cat /proc/sys/fs/inotify/max_user_watches
commande.s'il affiche moins de fichiers, y compris node_modules, ouvrez le fichier
/etc/sysctl.conf
avec le privilège root et ajoutezfs.inotify.max_user_watches=524288
dans le fichier et enregistrezréexécutez la commande cat pour voir le résultat. Ça va marcher! j'espère!
la source
J'utilise des tâches automatiques exécutées sur le dossier (devrait fonctionner VSCode> = 1.30) dans .vscode / tasks.json
Si cela ne fonctionne toujours pas sur le dossier de projet ouvert, essayez Ctrl + Maj + P et Tâches: Gérer les tâches automatiques dans le dossier et choisissez "Autoriser les tâches automatiques dans le dossier" sur le dossier principal du projet ou le dossier en cours d'exécution.
la source