La fonctionnalité "Compiler à l'enregistrement" ne fonctionne plus pour moi après la mise à niveau vers Visual Studio 2015. Lorsque je modifie un fichier .ts
dans mon projet et que je l'enregistre, la barre d'état au bas de IDE indique Output(s) generated successfully
, mais le fichier .js
généré ne change pas.
Voici ce que j'ai essayé:
ajouter ce qui suit à l'élément <Project>
racine dans mon .csproj
:
<PropertyGroup>
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
</PropertyGroup>
cochant et décochant l'option "Compiler automatiquement les fichiers TypeScript ne faisant pas partie d'un projet" dans Tools -> Options -> TypeScript -> Project
:
double vérification pour vous assurer que "Compile à l'enregistrement" est coché dans les propriétés TypeScript Build de mon projet:
Qu'est-ce que je rate?
De plus, l'étape de compilation TypeScript fonctionne comme prévu lorsqu'elle est déclenchée par une génération normale.
Ce problème semble avoir été résolu avec la mise à jour la plus récente de l'extension TypeScript Language Services
.
Voir cette réponse pour des instructions sur l'application de cette mise à jour.
Pour moi, c’était cette option dans tsconfig.json
:
"compileOnSave": true,
"compilerOptions": { ... },
Redémarrez Visual Studio pour que cette modification soit prise en compte.
Je suis tombé sur ce problème aujourd'hui: je l'ai corrigé en utilisant la nouvelle option de compilateur "watch":true
, également disponible via JSON dans les versions les plus récentes de TypeScript:
{
"compilerOptions": {
"watch": true
}
}
Après cela, je devais résoudre un autre problème lié à l'erreur suivante qui apparaissait dans la fenêtre de sortie:
Object doesn't support property or method 'watchFile'
Il s'est avéré que mon système utilisait une version obsolète de TypeScript (1.0.x), bien que j'étais sûr d'en avoir une plus récente fournie avec Visual Studio 2015 Update 1 (1.7). Si vous rencontrez ce problème, vous pouvez facilement vérifier votre version de tsc en tapant tsc -v
à partir d'une invite de commande.
S'il est écrit 1.0.x
ou <1.7, c'est probablement parce que vous avez d'anciennes références dans votre variable d'environnement PATH. Assurez-vous que la version 1.7 ou ultérieure est installée en consultant le dossier de votre Kit de développement logiciel (SDK) Microsoft, qui est celui utilisé par Visual Studio pour installer les packages TypeScript à mesure de leur mise à jour:
C:\Program Files (x86)\Microsoft SDKs\TypeScript
Sinon, mettez à jour en conséquence. Ouvrez CPanel> System> Advanced> Variables d'environnement, sélectionnez Variables système et cliquez sur Edit; parcourez la liste en recherchant une référence au dossier TypeScript, modifiez-en une pour la faire pointer sur la version installée la plus récente de TypeScript (1.7
ou supérieur) et supprimez les autres copies. Voir aussi capture d'écran ci-dessous:
Pour plus de détails, lisez cet article sur mon blog.
Solution:
Pour moi, et je suis sûr que c'est aussi le cas pour d'autres, cela était dû à une erreur dans le fichier tsconfig.json.
Vous devez ajouter "compileOnSave": true. Mais dans la section globale pas dans compilerOptions.
Wrong:
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"compileOnSave": true
},
"exclude": [
"node_modules",
"wwwroot"
]
}
Correct:
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5"
},
"compileOnSave": true,
"exclude": [
"node_modules",
"wwwroot"
]
}
Meilleures salutations,
Anders Both Basechat.
Dans mon cas, j'avais installé Visual Studio Community 2015 avec VS 2012. J'utilisais Web Essentials for TypeScript en 2012, ce qui semblait être en conflit avec 2015.
La désinstallation de Web Essentials en 2012 a résolu le problème pour moi.
Avec TypeScript 2, vous devez supprimer "outDir": de votre tsconfig. Corrige le bug pour moi dans Visual Studio.
Le "compileOnSave": true,
ne fonctionnait pas pour moi. J'ai finalement compris que Visual Studio n'honore pas la valeur "compileOnSave": true,
si elle est définie dans un autre fichier .json
que vous étendez. Il doit être à la racine pour que cela fonctionne.
Dans les propriétés du projet -> "TypeScript Build", vous pouvez également simplement décocher "Ne pas émettre de sorties si des erreurs sont signalées". Le faire cocher semble désactiver la transmission lors de la sauvegarde, en cas d'erreur ou non.
localisez le fichier, à savoir C:\file.ts, dans votre terminal/cmd
et tapez
tsc file.ts -w // watches for file changes and converts on save
Exact même problème ici. J'utilise Visual Studio 2015 mise à jour 3 et TypeScript 2.9.2.0. Dans Outils/Options/Projets et solutions/Outils Web externes, j'ai mis à niveau $ (PATH) à la deuxième position. Avec toutes ces configurations, compileOnSave: true ne fonctionne pas pour moi. La solution de contournement consiste à ouvrir une ligne de commande, exécuter ng build --watch
sur le côté et laisser le noeud se charger de la compilation automatique