1001Ferramentas
🟦Dev

Gerador de tsconfig.json

Gere um tsconfig.json customizado: target ES, módulo, strict, paths, JSX, declaração e mais. Validação contra opções inválidas. Tudo no navegador.

Montando um tsconfig que compila

Começar um projeto TypeScript quase sempre passa por copiar o tsconfig de outro repositório, que vem com opções de um setup diferente (Next, Vite, Node puro) e faz o tsc reclamar de coisas que você nem escolheu. Aqui a escolha é curta: target, module, moduleResolution e jsx nos selects, mais quatro flags (strict, declaration, esModuleInterop, skipLibCheck), e o JSON aparece pronto conforme você clica, já com outDir ./dist, rootDir ./src e include em src.

As combinações não são livres, e é aí que a maioria trava. O moduleResolution bundler só vale quando o module é ESNext ou preserve; marcar CommonJS junto com bundler dá erro na compilação, não build. E module NodeNext exige moduleResolution NodeNext, sempre em par. Esta página não bloqueia essas combinações, ela escreve o que você pedir. Outra: strict não é uma flag, é um atalho que liga oito, entre elas noImplicitAny e strictNullChecks.

Os caminhos são fixos: outDir ./dist e rootDir ./src. Se o seu código mora em app/ ou lib/, ajuste depois de colar. Não existe campo para paths, lib nem noEmit, e isso importa em projeto Vite ou Next, onde quem transpila é o bundler e você normalmente quer noEmit true (o outDir vira decoração). Salve a saída como tsconfig.json na raiz do repositório. Tudo é montado no navegador, nenhuma escolha sua é enviada.

Perguntas frequentes

Qual target eu escolho?
Se roda em Node 18 ou mais novo, ES2022 cobre tudo que o runtime entende. Para browser com etapa de build, o bundler ainda processa a saída, então ES2020 já é um piso seguro.
Posso deixar comentário no tsconfig.json?
Pode. O TypeScript lê o arquivo como JSONC, então aceita // , /* */ e até vírgula sobrando. Esta página emite JSON puro, mas nada impede você de comentar depois.
Preciso marcar declaration?
Só se você publica uma biblioteca e quer que quem consome enxergue os tipos. Em aplicação final ela apenas gera arquivos .d.ts que ninguém lê e deixa o build mais lento.

Ferramentas Relacionadas