Geração de tsconfig.json: o que está por baixo do capô?

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que o tsconfig.json não é apenas um arquivo?



Todo mundo que já escreveu em TypeScript já se deparou com o misterioso arquivo tsconfig.json. Se você é iniciante, provavelmente apenas o copiou da documentação ou pesquisou no Google "como gerar tsconfig.json". E se você é um desenvolvedor experiente, talvez já tenha se perguntado: o que realmente acontece por baixo do capô quando executo tsc --init?



Neste artigo, não vamos apenas dar uma receita pronta, mas vamos dar uma olhada na sala de máquinas do compilador TypeScript. Você aprenderá como o compilador lê a configuração, quais flags são responsáveis pela rigidez do código e como escrever seu próprio "gerador" mínimo de tsconfig.json na unha. Vamos lá!



1. O que é tsconfig.json e para que serve?



tsconfig.json é um arquivo JSON que diz ao compilador TypeScript (tsc) como exatamente processar seu código. Sem ele, o tsc funcionará no modo "padrão", mas muitas vezes isso não é suficiente para projetos sérios.



Por baixo do capô, o tsconfig.json define:

  • Quais arquivos compilar (chave include, exclude, files).
  • Onde colocar o resultado (chave outDir).
  • Quais versões do JavaScript suportar (chave target).
  • Como verificar tipos estritamente (chaves strict, noImplicitAny e outras).
  • Módulos e caminhos adicionais.


Quando você pergunta "how can I generate a tsconfig.json file", a resposta geralmente é uma: tsc --init. Mas vamos entender o que exatamente esse comando gera.



2. O comando tsc --init: o que está por baixo do capô?



Execute no terminal:

npx tsc --init


Na raiz do projeto, aparecerá um arquivo tsconfig.json com um monte de configurações comentadas. Na verdade, por baixo do capô, o compilador TypeScript executa o seguinte algoritmo:



  1. Verifica se o tsconfig.json já existe no diretório atual.
  2. Se não existir, cria um modelo com as configurações padrão.
  3. Define target: "es2016", module: "commonjs", strict: true e outros valores razoáveis.
  4. Comenta todas as outras opções para que o desenvolvedor possa descomentá-las conforme necessário.


Mas e se você quiser personalizar a geração? Por exemplo, ativar imediatamente o modo estrito ou definir um caminho para os arquivos de saída? Para isso, você pode escrever seu próprio script.



2.1. Exemplo: seu próprio gerador de tsconfig.json em TypeScript



Imagine que você está escrevendo uma ferramenta para configurar projetos automaticamente. Veja como pode ser uma função que gera tsconfig.json por baixo do capô:



import * as fs from 'fs';import * as path from 'path';

interface TsConfig { compilerOptions: { target: string; module: string; strict: boolean; outDir: string; rootDir: string; esModuleInterop: boolean; skipLibCheck: boolean; forceConsistentCasingInFileNames: boolean; }; include: string[]; exclude: string[];}

function generateTsConfig( target: string = 'ES2020', outDir: string = './dist', rootDir: string = './src', strict: boolean = true): TsConfig { return { compilerOptions: { target, module: 'commonjs', strict, outDir, rootDir, esModuleInterop: true, skipLibCheck: true, forceConsistentCasingInFileNames: true, }, include: ['src/**/*'], exclude: ['node_modules', 'dist'], };}

// Gera e salvaconst config = generateTsConfig();fs.writeFileSync( path.join(process.cwd(), 'tsconfig.json'), JSON.stringify(config, null, 2));console.log('tsconfig.json criado!');

Blogs

Book Recommendations