javascript - theme - Visual Studio 2015 compila TODOS los archivos mecanografiados cuando se cambia el archivo SINGLE
estructura theme wordpress (4)
Estoy usando Visual Studio 2015 con Typescript 1.5.4 y Resharper 9
Este es el escenario de buggy:
- Tengo alrededor de 180 archivos mecanografiados
- Cambio solo archivo .ts
- VS muestra el mensaje "Generación del archivo XXX.ts completo. Los archivos restantes aún se están compilando"
- después de eso TODOS mis archivos .ts se compilan en .js
- Se cambiaron 2 cosas en esos archivos .js: el formato es ligeramente diferente y la referencia para .js.map se eliminó
- Cuando construyo todo el proyecto, los archivos .js se generan de nuevo pero con el formato original y con el enlace a .js.map presente
Esto es molesto porque genera demasiado ruido en Git y me impide depurar archivos mecanografiados directamente en el navegador. (debido a que falta el archivo .js.map)
El comportamiento deseado es, por supuesto, que el único archivo .ts modificado se compile al guardar. ¿Cómo hacerlo?
Parece que R # no tiene nada que ver con esto, porque continúa sucediendo con R # deshabilitado.
Mis configuraciones de proyecto actuales:
-------------ACTUALIZAR-------------
He intentado actualizar a la versión 1.6 de Typescript. La variable PATH apunta a C:/Program Files (x86)/Microsoft SDKs/TypeScript/1.4/
así que lo actualicé para que apunte a 1.6
Entonces cuando ahora message TS6029: Version 1.6.2
tsc -v
dice el message TS6029: Version 1.6.2
Pero debido a razones históricas (el proyecto en el que trabajo tiene aproximadamente 2 años) tengo que usar la versión 1.4
dentro de VisualStudio. Así que en .csproj está <TypeScriptToolsVersion>1.4</TypeScriptToolsVersion>
Después de este cambio la compile on safe
dejó de funcionar completamente.
Ahora tengo que reconstruir toda la solución :(
Otra solución: puedes usar Gulp para generar tus archivos js y mapas compilados. Con Gulp también puede crear una tarea de observación para compilar al guardar un archivo ts. Incluso puedes crear tareas limpias para limpiar el proyecto.
Ejemplo de una tarea de compilación:
var tsProject = ts.createProject(paths.typescriptRoot + ''tsConfig.json''); // use tsconfig.json
gulp.task("tsbuild", function () {
var tsResult = tsProject.src()
.pipe(sourcemaps.init()) // needed to create sourcemaps
.pipe(ts(tsProject)); // use tsconfig.json
return tsResult.js
.pipe(concat(paths.concatTsFileName)) // concat all output files into a sings js files
.pipe(sourcemaps.write()) // write the sourcemap to be able to debug the ts files
.pipe(gulp.dest(paths.typescriptOut)); // output the result on specific path
});
Ejemplo de una tarea de limpieza:
gulp.task("clean:tsout", function (cb) {
rimraf(paths.typescriptOut + paths.concatTsFileName, cb); // rimraf is used to delete a folder
});
gulp.task("clean:scriptjs",
function () {
return gulp.src(paths.typescriptJs, { read: false }) // to clean up multiple files we need to use gulp-rimraf
.pipe(gulpRimraf());
});
Ejemplo de una tarea de vigilancia:
gulp.task("watch:tsbuild", [''tsbuild''], function () {
gulp.watch(paths.typescriptRoot + ''**/*.ts'', [''tbbuild'']);
});
Parece que Visual Studio no admite el modo de visualización correctamente (es decir, compilación incremental):
Para que quede claro,
--watch
funciona en Windows si está usando node.js / io.js, pero el programa tsc.exe distribuido con VS no lo admite; de todos modos, aún tiene Compile on Save para una funcionalidad similar.
https://github.com/Microsoft/TypeScript/issues/2375#issuecomment-100812347
No estoy seguro de por qué esto estaba cerrado. El soporte --watch para nuestro host tsc.exe sería posible y deseable. En este momento, el factor limitante es que nuestro host tsc.exe es un poco de C ++ feo, que utiliza algunas interfaces COM antiguas para Chakra en las que no hemos dedicado mucho esfuerzo. Nuestras opciones son: [...]
https://github.com/Microsoft/TypeScript/issues/2375#issuecomment-100949019
Como una solución, podría ejecutar
tsc --watch
en la carpeta donde se encuentra tsconfig.json
?
Edición: https://github.com/Microsoft/TypeScript/issues/5638 - Visual Studio 2015 compila TODOS los archivos mecanografiados cuando se cambia el archivo SINGLE
Comenzando con VS 2015 RTM, Compile-on-Save, cada vez que guarde un archivo, debemos generar todos los archivos en el proyecto para asegurar un resultado consistente. Tenemos numerosos problemas relacionados con resultados inconsistentes al guardar archivos en diferentes órdenes. La construcción de todos los archivos es la única forma en que podemos garantizar una salida correcta y coherente, dado que todas las construcciones de lenguaje y cómo interactúan entre ellos (por ejemplo, espacios de nombres / módulos internos pueden aumentarse, y eso afecta la forma del código emitido, también las constricciones están alineadas) como constantes, etc.).
Pruebe "ECMAScript 5" en lugar de "ECMAScript 3" en "Versión de ECMAScript
Tuve un problema similar, pero como estábamos manejando la compilación de TS por nuestra cuenta, quería evitar la compilación automática en absoluto ...
La solución fue forzar el indicador TypeScriptCompileOnSaveEnabled
a false
dentro del proyecto:
<PropertyGroup>
<TypeScriptCompileOnSaveEnabled>false</TypeScriptCompileOnSaveEnabled>
</PropertyGroup>
en mi caso, esto evitó que VS2015 compilara automáticamente los archivos .ts al guardar, sin que VS se interponga en el camino cada vez y desordene las salidas ...