Skip to content
Latchkey

O Que É um Transpiler? Conversão de Código de Fonte para Fonte

Um transpiler é um compilador de fonte para fonte: ele reescreve código de uma linguagem ou nível de sintaxe em código equivalente em outro, como JS moderno em JS mais antigo.

Os browsers não conseguem rodar todo tipo de código-fonte que os autores escrevem. TypeScript, JSX e a sintaxe mais nova de JavaScript precisam ser transformados em JavaScript puro que um browser mais antigo consiga executar. Um transpiler faz essa tradução sem mudar o que o código faz. Ele roda cedo no build, antes do bundling, e sua saída alimenta o restante do pipeline.

Transpiler vs compilador

Um compilador tradicional rebaixa código de alto nível para código de máquina ou bytecode. Um transpiler permanece no mesmo nível de abstração, traduzindo uma linguagem legível por humanos para outra. TypeScript para JavaScript é transpilação; C para código de máquina é compilação.

O que é transpilado na web

  • TypeScript reduzido a JavaScript.
  • JSX reescrito em chamadas de função.
  • Nova sintaxe de JS rebaixada para browser targets mais antigos.
  • Recursos opcionais da linguagem, como decorators.

Transpilers comuns

Babel é o transpiler clássico e configurável. esbuild e SWC fazem o mesmo trabalho, escritos em linguagens mais rápidas. O compilador do TypeScript (tsc) também transpila, embora muitos times deixem uma ferramenta mais rápida emitir o JS e usem o tsc apenas para verificação de tipos.

A verificação de tipos é separada

Um transpiler rápido muitas vezes remove os tipos do TypeScript sem verificá-los. Isso significa que um build pode ter sucesso enquanto os tipos estão quebrados. Os pipelines geralmente adicionam uma etapa separada de type-check para que os erros de tipo ainda façam o CI falhar.

Transpilação no CI/CD

A transpilação roda a cada build e escala com a quantidade de arquivos. Cachear a saída do transpiler e reprocessar apenas os arquivos alterados a mantém rápida. Em um runner novo sem cache, cada arquivo é transpilado do zero, o que pode dominar builds pequenos.

Principais conclusões

  • Um transpiler traduz código entre linguagens ou níveis de sintaxe na mesma abstração.
  • Transpilers rápidos costumam pular a verificação de tipos, então adicione uma etapa separada de type-check no CI.
  • Cachear a saída transpilada evita reprocessar arquivos inalterados a cada execução.

Guias relacionados