La funzionalità “Compile on save” di TypeScript non funziona in Visual Studio 2015

La funzionalità “Compile on save” non funziona per me dopo l’aggiornamento a Visual Studio 2015. Quando .ts una modifica a un file .ts nel mio progetto e salvo, la barra di stato nella parte inferiore dell’IDE dice Output(s) generated successfully , ma il file .js generato non cambia.

Ecco cosa ho provato:

Cosa mi manca?

Come nota a margine, la fase di compilazione TypeScript funziona come previsto quando viene triggersta da una build regolare.

Per me era questa opzione in tsconfig.json :

 "compileOnSave": true, "compilerOptions": { ... }, 

Riavviare Visual Studio affinché questa modifica abbia l’effetto.

Oggi mi sono imbattuto in questo problema: l’ho risolto utilizzando il nuovo "watch":true opzione "watch":true compilatore, disponibile anche tramite JSON nelle più recenti versioni di TypeScript:

 { "compilerOptions": { "watch": true } } 

Dopo averlo fatto, ho dovuto risolvere un altro problema relativo al seguente errore apparso nella finestra di output:

 Object doesn't support property or method 'watchFile' 

Si è scoperto che il mio sistema utilizzava una versione obsoleta di TypeScript (1.0.x), nonostante fossi sicuro di averne uno più recente fornito con Visual Studio 2015 Update 1 (1.7). Se si incontra questo problema, è ansible controllare facilmente la versione di tsc -v digitando tsc -v da un prompt dei comandi.

Se si dice 1.0.x o qualsiasi cosa <1.7, è probabilmente dovuto al fatto che si hanno alcuni vecchi riferimenti nella variabile d'ambiente PATH. Assicurati di aver installato 1.7 o versione successiva controllando all'interno della cartella Microsoft SDKs, che è quella utilizzata da Visual Studio per installare i pacchetti TypeScript man mano che vengono aggiornati:

 C:\Program Files (x86)\Microsoft SDKs\TypeScript 

In caso contrario, aggiorna di conseguenza. Apri CPanel > Sistema > Avanzate > Variabili d’ambiente , seleziona Variabili di sistema e fai clic su Modifica ; sfoglia l’elenco alla ricerca di qualsiasi riferimento alla cartella TypeScript, cambia uno di essi per fare in modo che punti la versione più recente installata di TypeScript ( 1.7 o successiva) e cancella tutti gli altri duplicati. Vedi anche la schermata qui sotto:

inserisci la descrizione dell'immagine qui

Per ulteriori dettagli, leggi questo post .

Questo problema sembra essere stato risolto con l’aggiornamento più recente all’estensione di TypeScript Language Services .

Vedere questa risposta per istruzioni su come applicare questo aggiornamento.

Soluzione:

Per me, e sono sicuro che questo è anche il caso per gli altri, questo è dovuto a un errore nel tsconfig.json.

Devi aggiungere “compileOnSave”: true. Ma nella sezione globale non all’interno di 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" ] } 

I migliori saluti,

Anders Both Basechat.

Nel mio caso, avevo installato Visual Studio Community 2015 sul lato VS 2012. Avevo usato Web Essentials per typescript nel 2012 che sembrava in conflitto con il 2015.

La disinstallazione di Web Essentials nel 2012 ha risolto il problema per me.

Con typescript 2 devi cancellare “outDir”: dal tuo tsconfig. Risolvi il bug per me in Visual Studio.

Nelle proprietà del progetto -> “TypeScript Build”, puoi anche semplicemente deselezionare “Non emettere output se vengono segnalati errori”. Dopo averlo controllato sembra distriggersre il transpiling su save, dove c’è un errore o meno.

Il "compileOnSave": true, non funzionava per me. "compileOnSave": true, fine ho capito che Visual Studio non onora "compileOnSave": true, value se è definito in un altro file .json che stai estendendo. Deve essere nella radice per farlo funzionare.

individuare il file C: \ file.ts nel terminal/cmd e digitare

 tsc file.ts -w // watches for file changes and converts on save 

Esattamente lo stesso problema qui. Sto usando Visual Studio 2015 update 3 e TypeScript 2.9.2.0. In strumenti / opzioni / progetti e soluzioni / strumenti web esterni, ho aggiornato $ (PATH) alla seconda posizione. Con tutte queste configurazioni, compileOnSave: true non funziona per me. La soluzione alternativa è aprire una riga di comando, eseguire ng build --watch sul lato e lasciare che il nodo si occupi della compilazione automatica