Skip to content
Latchkey

tsup vs Rollup: fazendo bundle de bibliotecas TypeScript

Escolha o tsup para builds rápidos de bibliotecas TypeScript com quase nenhuma config, movidos pelo esbuild; escolha o Rollup quando precisar de controle preciso sobre saída, plugins e tree-shaking para um pacote publicado.

tsup e Rollup fazem bundle de bibliotecas TypeScript/JavaScript, mas em níveis de abstração diferentes. O tsup é um wrapper fino e opinativo em torno do esbuild (com geração de .d.ts baseada em rollup) que produz bundles ESM/CJS com config mínima. O Rollup é um bundler de nível mais baixo e altamente configurável, conhecido por saída limpa e forte tree-shaking, muito usado para publicar bibliotecas.

tsupRollup
Engineesbuild (+ rollup para tipos)Núcleo do Rollup
ConfigMínima (tsup.config.ts)Explícita (rollup.config.js + plugins)
VelocidadeMuito rápida (esbuild)Rápida, mais lenta que o esbuild
Formatos de saídaESM, CJS, IIFEESM, CJS, UMD, IIFE, etc.
Declarações de tipoIntegradas (--dts)Via plugin (ex.: rollup-plugin-dts)
ControleOpinativoGranular

Onde cada um realmente se destaca

O tsup vence em velocidade e ergonomia: um comando produz ESM/CJS duplo mais declarações de tipo, o que cobre a maioria das bibliotecas npm com quase nenhuma config. O Rollup vence quando você precisa de controle exato, como nomeação de saída customizada, code-splitting avançado, comportamento específico de plugin ou máxima qualidade de tree-shaking, e está disposto a manter uma config e uma cadeia de plugins.

No CI

O tsup mantém os passos de build curtos e rápidos nos runners, o que reduz o custo por minuto. Os builds do Rollup ainda são rápidos, mas exigem muita configuração; cacheie o node_modules e a saída do build para que o CI não reconstrua pacotes inalterados. Para bibliotecas, rode uma verificação de tipos (tsc --noEmit) junto do bundle no CI, já que o esbuild não faz verificação de tipos.

Ressalvas honestas

O tsup usa o esbuild, que é extremamente rápido, mas não faz verificação de tipos e suporta um subconjunto de transformações de casos extremos; você trata os tipos separadamente. O Rollup dá mais controle ao custo de mais setup e builds mais lentos. Note que o próprio tsup depende do esbuild e do Rollup por baixo dos panos, então a escolha é realmente sobre quanto controle você quer.

O veredito

Use o tsup para builds de biblioteca rápidos e com pouca config que cobrem o caso comum de ESM/CJS mais tipos. Use o Rollup quando o controle de saída, plugins avançados ou a qualidade do tree-shaking justificarem a configuração extra.

Guias relacionados