Como posso configurar o Visual Studio Code para compilar arquivos datilografados ao salvar?
Vejo que é possível configurar uma tarefa para criar o arquivo em foco usando o ${file}
como argumento. Mas eu gostaria que isso fosse feito quando um arquivo fosse salvo.
typescript
visual-studio-code
Powell Quiring
fonte
fonte
tsc <filename> --watch
o terminalRespostas:
Atualização de maio de 2018:
Desde maio de 2018, você não precisa mais criar
tsconfig.json
manualmente ou configurar o corredor de tarefas.tsc --init
na sua pasta do projeto para criar otsconfig.json
arquivo (se você ainda não tiver um).tsc: watch - tsconfig.json
.Você pode ter vários
tsconfig.json
arquivos no seu espaço de trabalho e executar várias compilações ao mesmo tempo, se desejar (por exemplo, front-end e back-end separadamente).Resposta original:
Você pode fazer isso com os comandos Build:
Crie um simples
tsconfig.json
com"watch": true
(isso instruirá o compilador a observar todos os arquivos compilados):Observe que a
files
matriz é omitida; por padrão, todos os*.ts
arquivos em todos os subdiretórios serão compilados. Você pode fornecer outros parâmetros ou alterartarget
/out
, apenas verifique sewatch
está definido comotrue
.Configure sua tarefa ( Ctrl+Shift+P->
Configure Task Runner
):Agora pressione Ctrl+Shift+Bpara criar o projeto. Você verá a saída do compilador na janela de saída ( Ctrl+Shift+U).
O compilador compilará os arquivos automaticamente quando salvos. Para interromper a compilação, pressione Ctrl+P->
> Tasks: Terminate Running Task
Eu criei um modelo de projeto especificamente para esta resposta:
typescript-node-basic
fonte
configure task
: o VSCode detecta automaticamente que existetsconfig.json
uma caixa de diálogo e solicita uma caixa de diálogo onde você pode escolhertsc: build - tsconfig.json
outsc: watch - tsconfig.json
. Escolha o último e o VSCode gera otasks.json
arquivo (se não havia antes) e adiciona a configuração correta para você.Se você deseja evitar ter que usar
CTRL
+SHIFT
+B
e, em vez disso, deseja que isso ocorra sempre que você salvar um arquivo, vincule o comando ao mesmo atalho da ação de salvar:Isso ocorre em keybindings.json - (vá para Arquivo usando> Preferências -> Atalhos do teclado).
fonte
when
condição `usandoeditorLangId
é de importação.Se pressionar Ctrl+ Shift+ Bparecer muito trabalhoso, você pode ativar "Salvar automaticamente" (Arquivo> Salvar automaticamente) e usar o NodeJS para assistir a todos os arquivos em seu projeto e executar o TSC automaticamente.
Abra um prompt de comando do Node.JS, altere o diretório para a pasta raiz do projeto e digite o seguinte;
E pronto, sempre que o VS Code salvar automaticamente o arquivo, o TSC o recompilará.
Essa técnica é mencionada em uma postagem do blog;
http://www.typescriptguy.com/getting-started/angularjs-typescript/
Role para baixo até "Compilar ao salvar"
fonte
Escreva uma extensão
Agora que o vscode é extensível, é possível conectar-se ao evento on save por meio de uma extensão. Uma boa visão geral das extensões de gravação para VSCode pode ser encontrada aqui: https://code.visualstudio.com/docs/extensions/overview
Aqui está um exemplo simples que apenas chama
echo $filepath
e gera stdout em um diálogo de mensagem:(Também mencionado nesta questão do SO: https://stackoverflow.com/a/33843805/20489 )
Extensão VSCode existente
Se você deseja instalar apenas uma extensão existente, aqui está uma que eu escrevi disponível na galeria VSCode: https://marketplace.visualstudio.com/items/emeraldwalk.RunOnSave
O código fonte está disponível aqui: https://github.com/emeraldwalk/vscode-runonsave/blob/master/src/extension.ts
fonte
Eu lutei muito para conseguir o comportamento que desejo. Essa é a maneira mais fácil e melhor de compilar os arquivos TypeScript ao salvar, na configuração desejada, apenas ESTE arquivo (o arquivo salvo). É um task.json e um keybindings.json.
fonte
{ "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'" }
Em vez de criar um único arquivo e vincular Ctrl + S para acionar essa compilação, recomendo iniciar o tsc no modo de observação usando o seguinte arquivo task.json:
Isso criará o projeto inteiro e reconstruirá os arquivos que são salvos independentemente de como eles são salvos (Ctrl + S, salvamento automático, ...)
fonte
Atualizada
Na tua
tsconfig.json
se o problema persistir, siga um destes procedimentos:
Reinicie seu editor ou altere qualquer rota, reverta-o novamente e salve o aplicativo. Vai começar a compilar. ie
fonte
Eu implementei a compilação ao salvar com a tarefa gulp usando gulp-typescript e construção incremental. Isso permite controlar a compilação o que você quiser. Observe minha variável tsServerProject, no meu projeto real também tenho tsClientProject porque quero compilar meu código de cliente sem nenhum módulo especificado. Como eu sei, você não pode fazê-lo com código vs.
fonte
Selecione Preferências -> Configurações da área de trabalho e adicione o seguinte código: Se você tiver o Hot reload ativado, as alterações serão refletidas imediatamente no navegador.
fonte
Status atual deste problema:
https://github.com/Microsoft/vscode/issues/7015
fonte
Posso dizer que com a versão mais recente do TypeScript 1.8.X e 1.0 do código do Visual Studio, a técnica que mostrei é obsoleta. Basta usar um tsconfig.json no nível raiz do seu projeto e tudo funciona automaticamente para verificação de sintaxe. Em seguida, use tsc -w na linha de comando para assistir / recompilar automaticamente. Ele lerá o mesmo arquivo tsconfig.json para obter opções e configuração da compilação ts.
fonte
Uma maneira extremamente simples de compilar automaticamente ao salvar é digitar o seguinte no terminal:
tsc main --watch
Onde
main.ts
está o seu nome de arquivo.Observe que isso só funcionará enquanto este terminal estiver aberto, mas é uma solução muito simples que pode ser executada enquanto você estiver editando um programa.
fonte
tsc -w
também funciona para todos os arquivos datilografados no projetoVocê precisa aumentar o limite de relógios para corrigir o problema de recompilação ao salvar, Abrir terminal e inserir estes dois comandos:
Para tornar as alterações persistentes mesmo após a reinicialização, execute este comando também:
fonte
tentei os métodos acima, mas o meu parou de compilar automaticamente quando pareceu, devido ao número máximo de arquivos a serem observados ultrapassando o limite.
executar
cat /proc/sys/fs/inotify/max_user_watches
comando.se estiver mostrando menos arquivos, incluindo node_modules, abra o arquivo
/etc/sysctl.conf
com privilégios de root e adicionefs.inotify.max_user_watches=524288
no arquivo e salveexecute novamente o comando cat para ver o resultado. Vai funcionar! esperançosamente!
fonte
Eu uso tarefas automáticas executadas na pasta (deve funcionar VSCode> = 1.30) em .vscode / tasks.json
Se isso ainda não funcionar na pasta do projeto aberta, tente Ctrl + shift + P e Tarefas: Gerenciar tarefas automáticas na pasta e escolha "Permitir tarefas automáticas na pasta" na pasta principal do projeto ou na pasta em execução.
fonte