¿Cómo puedo configurar Visual Studio Code para compilar archivos de mecanografía al guardar?
Veo que es posible configurar una tarea para construir el archivo en foco usando el ${file}
como argumento. Pero me gustaría que esto se haga cuando se guarde un archivo.
typescript
visual-studio-code
Powell Quiring
fuente
fuente
tsc <filename> --watch
en la terminalRespuestas:
Actualización de mayo de 2018:
A partir de mayo de 2018, ya no necesita crear
tsconfig.json
manualmente o configurar el corredor de tareas.tsc --init
en la carpeta de su proyecto para crear eltsconfig.json
archivo (si aún no tiene uno).tsc: watch - tsconfig.json
.Puede tener varios
tsconfig.json
archivos en su espacio de trabajo y ejecutar múltiples compilaciones a la vez si lo desea (por ejemplo, frontend y backend por separado).Respuesta original:
Puedes hacer esto con los comandos Build:
Cree un simple
tsconfig.json
con"watch": true
(esto le indicará al compilador que vea todos los archivos compilados):Tenga en cuenta que
files
se omite la matriz, de forma predeterminada*.ts
se compilarán todos los archivos en todos los subdirectorios. Puede proporcionar cualquier otro parámetro o cambiotarget
/out
, solo asegúrese de quewatch
esté configurado entrue
.Configure su tarea ( Ctrl+Shift+P->
Configure Task Runner
):Ahora presione Ctrl+Shift+Bpara construir el proyecto. Verá la salida del compilador en la ventana de salida ( Ctrl+Shift+U).
El compilador compilará archivos automáticamente cuando se guarde. Para detener la compilación, presione Ctrl+P->
> Tasks: Terminate Running Task
He creado una plantilla de proyecto específicamente para esta respuesta:
typescript-node-basic
fuente
configure task
: VSCode detectará automáticamente que hay untsconfig.json
y le indicará un diálogo donde puede elegirtsc: build - tsconfig.json
otsc: watch - tsconfig.json
. Elija el último y VSCode genera eltasks.json
archivo (si no existía antes) y agrega la configuración correcta para usted.Si desea evitar tener que usar
CTRL
+SHIFT
+B
y, en cambio, desea que esto ocurra cada vez que guarde un archivo, puede vincular el comando al mismo atajo que la acción de guardar:Esto va en su keybindings.json - (diríjase a esto usando Archivo -> Preferencias -> Atajos de teclado).
fuente
when
condición de usoeditorLangId
es de importancia.Si presionar Ctrl+ Shift+ Bparece un gran esfuerzo, puede activar "Guardar automáticamente" (Archivo> Guardar automáticamente) y usar NodeJS para ver todos los archivos en su proyecto, y ejecutar TSC automáticamente.
Abra un símbolo del sistema Node.JS, cambie el directorio a la carpeta raíz del proyecto y escriba lo siguiente;
Y bueno, cada vez que VS Code auto guarda el archivo, TSC lo recompilará.
Esta técnica se menciona en una publicación de blog;
http://www.typescriptguy.com/getting-started/angularjs-typescript/
Desplácese hacia abajo hasta "Compilar al guardar"
fuente
Escribir una extensión
Ahora que vscode es extensible, es posible conectarse al evento on save mediante una extensión. Puede encontrar una buena descripción general de las extensiones de escritura para VSCode aquí: https://code.visualstudio.com/docs/extensions/overview
Aquí hay un ejemplo simple que solo llama
echo $filepath
y emite stdout en un diálogo de mensaje:(También se hace referencia en esta pregunta SO: https://stackoverflow.com/a/33843805/20489 )
Extensión VSCode existente
Si solo desea instalar una extensión existente, aquí hay una que escribí disponible en la galería VSCode: https://marketplace.visualstudio.com/items/emeraldwalk.RunOnSave
El código fuente está disponible aquí: https://github.com/emeraldwalk/vscode-runonsave/blob/master/src/extension.ts
fuente
He luchado mucho para obtener el comportamiento que quiero. Esta es la mejor y más fácil manera de hacer que los archivos TypeScript se compilen al guardar, en la configuración que quiero, solo ESTE archivo (el archivo guardado). Es un task.json y un keybindings.json.
fuente
{ "version": "0.1.0", "command": "tsc", "isShellCommand": true, "args": ["--module","amd","--target","ES5","${file}"], "showOutput": "silent", "problemMatcher": "$tsc" }
pulsaciones de teclas:{ "key": "cmd+s", "command": "workbench.action.tasks.build", "when":"editorTextFocus && editorLangId == 'typescript'" }
En lugar de crear un solo archivo y vincular Ctrl + S para activar esa compilación, recomendaría iniciar tsc en modo de observación utilizando el siguiente archivo task.json:
Esto una vez construirá todo el proyecto y luego reconstruirá los archivos que se guardan independientemente de cómo se guardan (Ctrl + S, guardado automático, ...)
fuente
Actualizado
En tus
tsconfig.json
Si el problema persiste, realice una de las siguientes acciones:
Reinicie su editor o cambie cualquier ruta, revísela y guarde la aplicación. Comenzará a compilarse. es decir
fuente
Implementé la compilación al guardar con la tarea gulp usando gulp-typescript y compilación incremental. Esto permite controlar la compilación lo que quieras. Observe mi variable tsServerProject, en mi proyecto real también tengo tsClientProject porque quiero compilar mi código de cliente sin ningún módulo especificado. Como sé, no puedes hacerlo con código vs.
fuente
Seleccione Preferencias -> Configuración del espacio de trabajo y agregue el siguiente código. Si tiene habilitada la recarga en caliente, los cambios se reflejarán inmediatamente en el navegador
fuente
Estado actual de este problema:
https://github.com/Microsoft/vscode/issues/7015
fuente
Puedo decir que con la última versión de TypeScript 1.8.X y 1.0 del código de Visual Studio, la técnica que mostré es obsoleta. Simplemente use un tsconfig.json en el nivel raíz de su proyecto y todo funciona automáticamente para la verificación de sintaxis. Luego use tsc -w en la línea de comando para ver / recompilar automáticamente. Leerá el mismo archivo tsconfig.json para ver las opciones y la configuración de la compilación ts.
fuente
Una forma extremadamente simple de autocompilar al guardar es escribir lo siguiente en el terminal:
tsc main --watch
donde
main.ts
esta tu nombre de archivoTenga en cuenta que esto solo se ejecutará mientras este terminal esté abierto, pero es una solución muy simple que se puede ejecutar mientras edita un programa.
fuente
tsc -w
también funciona para todos los archivos mecanografiados en el proyectoDebe aumentar el límite de relojes para solucionar el problema de recompilación al guardar, abrir terminal e ingresar estos dos comandos:
Para que los cambios sean persistentes incluso después de reiniciar, ejecute también este comando:
fuente
Probé los métodos anteriores, pero el mío dejó de compilar automáticamente cuando lo consideró necesario, debido a que el número máximo de archivos a observar ha superado el límite.
ejecutar
cat /proc/sys/fs/inotify/max_user_watches
comandosi muestra menos recuento de archivos, incluidos node_modules, abra el archivo
/etc/sysctl.conf
con privilegios de raíz y agreguefs.inotify.max_user_watches=524288
en el archivo y guardarejecute nuevamente el comando cat para ver el resultado. ¡Funcionará! ¡Ojalá!
fuente
Uso tareas automáticas en la carpeta (debería funcionar VSCode> = 1.30) en .vscode / task.json
Si esto todavía no funciona en la carpeta del proyecto abierto, intente Ctrl + shift + P y Tareas: Administre Tareas automáticas en la carpeta y elija "Permitir tareas automáticas en la carpeta" en la carpeta principal del proyecto o la carpeta en ejecución.
fuente