Skills Agentes

Tsdown

Empaqueta librerías TypeScript y JavaScript a gran velocidad usando Rolldown. Útil al construir librerías, generar declaraciones de tipos, bundlear en múltiples formatos o migrar desde tsup.

Reemplaza a: tsup

Estrellas
5.9k

en todo el repo

Actividad
52

0–100, la ruta de este skill

Actualizado
hace 3 meses

último commit aquí

Commits
1

últimos 90 días

Contexto
3.2k tok

50 tok en reposo

Paquete
42 archivos

175 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add antfu/skills --skill tsdown --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Empaqueta librerías TypeScript/JavaScript con Rolldown, generando salida para múltiples formatos (ESM, CJS, IIFE, UMD)
  • Genera archivos de declaración de TypeScript (.d.ts)
  • Aplica tree shaking, minificación, source maps y externalización de dependencias
  • Soporta React, Vue, Solid, Svelte, WASM y ejecutables independientes mediante `exe`

Úsalo cuando

  • Al construir librerías TypeScript/JavaScript para npm
  • Al generar archivos de declaración TypeScript (.d.ts)
  • Al empaquetar para múltiples formatos (ESM, CJS, IIFE, UMD)
  • Al migrar desde tsup con cambios mínimos

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • “Configura tsdown para bundlear mi librería en ESM y CJS con dts”
    • “Ayúdame a migrar mi configuración de tsup a tsdown”
    • “Genera una configuración de tsdown para un componente React”
    • “Crea un ejecutable standalone con tsdown desde src/cli.ts”

    SKILL.md

    En inglés

    tsdown - The Elegant Library Bundler

    Blazing-fast bundler for TypeScript/JavaScript libraries powered by Rolldown and Oxc.

    Runtime Requirement

    tsdown requires Node.js 22.18.0 or higher to run (build-time only). However, the bundled output can target much lower Node.js versions via the target option, so libraries built with tsdown are not locked to Node.js 22+ at runtime.

    If your package needs to support Node.js 18 / 20:

    • Build with Node.js 22+ in CI (e.g. set target: 'node18' or target: 'node20').
    • Test the built output (or the packed tarball) on the lower Node.js versions you intend to support — e.g. using a matrix job that runs the published package's tests on Node.js 18 / 20 / 22.

    When to Use

    • Building TypeScript/JavaScript libraries for npm
    • Generating TypeScript declaration files (.d.ts)
    • Bundling for multiple formats (ESM, CJS, IIFE, UMD)
    • Optimizing bundles with tree shaking and minification
    • Migrating from tsup with minimal changes
    • Building React, Vue, Solid, or Svelte component libraries

    Quick Start

    # Install
    pnpm add -D tsdown
    
    # Basic usage
    npx tsdown
    
    # With config file
    npx tsdown --config tsdown.config.ts
    
    # Watch mode
    npx tsdown --watch
    
    # Migrate from tsup
    npx tsdown-migrate
    

    Basic Configuration

    import { defineConfig } from 'tsdown'
    
    export default defineConfig({
      entry: ['./src/index.ts'],
      format: ['esm', 'cjs'],
      dts: true,
      clean: true,
    })
    

    Core References

    Topic Description Reference
    Getting Started Installation, first bundle, CLI basics guide-getting-started
    Configuration File Config file formats, multiple configs, workspace option-config-file
    CLI Reference All CLI commands and options reference-cli
    Migrate from tsup Migration guide and compatibility notes guide-migrate-from-tsup
    Plugins Rolldown, Rollup, Unplugin support advanced-plugins

    For comprehensive migration assistance with complete option mappings, install the dedicated tsdown-migrate skill: npx skills add rolldown/tsdown --skill tsdown-migrate | Hooks | Lifecycle hooks for custom logic | advanced-hooks | | Programmatic API | Build from Node.js scripts | advanced-programmatic | | Rolldown Options | Pass options directly to Rolldown | advanced-rolldown-options | | CI Environment | CI detection, 'ci-only' / 'local-only' values | advanced-ci |

    Build Options

    Option Usage Reference
    Entry points entry: ['src/*.ts', '!**/*.test.ts'] option-entry
    Output formats format: ['esm', 'cjs', 'iife', 'umd'] option-output-format
    Output directory outDir: 'dist', outExtensions option-output-directory
    Type declarations dts: true, dts: { sourcemap, compilerOptions, vue } option-dts
    Target environment target: 'es2020', target: 'esnext' option-target
    Platform platform: 'node', platform: 'browser' option-platform
    Tree shaking treeshake: true, custom options option-tree-shaking
    Minification minify: true, minify: 'dce-only' option-minification
    Source maps sourcemap: true, 'inline', 'hidden' option-sourcemap
    Watch mode watch: true, watch options option-watch-mode
    Cleaning clean: true, clean patterns option-cleaning
    Log level logLevel: 'silent', failOnWarn: false option-log-level

    Dependency Handling

    Feature Usage Reference
    Never bundle deps: { neverBundle: ['react', /^@myorg\//] } option-dependencies
    Always bundle deps: { alwaysBundle: ['dep-to-bundle'] } option-dependencies
    Only bundle deps: { onlyBundle: ['cac', 'bumpp'] } - Whitelist option-dependencies
    Skip node_modules deps: { skipNodeModulesBundle: true } option-dependencies
    Auto external Automatic dependency/peer/optional externalization option-dependencies

    Output Enhancement

    Feature Usage Reference
    Shims shims: true - Add ESM/CJS compatibility option-shims
    CJS default cjsDefault: true (default) / false option-cjs-default
    Package exports exports: true - Generate exports field option-package-exports
    CSS handling [experimental] css: { ... } — full pipeline with preprocessors, Lightning CSS, PostCSS, CSS modules, code splitting; requires @tsdown/css option-css
    CSS modules css: { modules: { localsConvention: 'camelCase' } } — scoped class names for .module.css files option-css
    CSS inject css: { inject: true } — preserve CSS imports in JS output option-css
    Unbundle mode unbundle: true - Preserve directory structure option-unbundle
    Root directory root: 'src' - Control output directory mapping option-root
    Executable [experimental] exe: true - Bundle as standalone executable, cross-platform via @tsdown/exe option-exe
    Package validation publint: true, attw: true - Validate package option-lint

    Framework & Runtime Support

    Framework Guide Reference
    React JSX transform, React Compiler recipe-react
    Vue SFC support, JSX recipe-vue
    Solid SolidJS JSX transform recipe-solid
    Svelte Svelte component libraries (source distribution recommended) recipe-svelte
    WASM WebAssembly modules via rolldown-plugin-wasm recipe-wasm

    Common Patterns

    Basic Library Bundle

    export default defineConfig({
      entry: ['src/index.ts'],
      format: ['esm', 'cjs'],
      dts: true,
      clean: true,
    })
    

    Multiple Entry Points

    export default defineConfig({
      entry: {
        index: 'src/index.ts',
        utils: 'src/utils.ts',
        cli: 'src/cli.ts',
      },
      format: ['esm', 'cjs'],
      dts: true,
    })
    

    Browser Library (IIFE/UMD)

    export default defineConfig({
      entry: ['src/index.ts'],
      format: ['iife'],
      globalName: 'MyLib',
      platform: 'browser',
      minify: true,
    })
    

    React Component Library

    export default defineConfig({
      entry: ['src/index.tsx'],
      format: ['esm', 'cjs'],
      dts: true,
      deps: {
        neverBundle: ['react', 'react-dom'],
      },
      inputOptions: {
        jsx: { runtime: 'automatic' },
      },
    })
    

    Preserve Directory Structure

    export default defineConfig({
      entry: ['src/**/*.ts', '!**/*.test.ts'],
      unbundle: true, // Preserve file structure
      format: ['esm'],
      dts: true,
    })
    

    CI-Aware Configuration

    export default defineConfig({
      entry: ['src/index.ts'],
      format: ['esm', 'cjs'],
      dts: true,
      failOnWarn: 'ci-only',  // opt-in: fail on warnings in CI
      publint: 'ci-only',
      attw: 'ci-only',
    })
    

    WASM Support

    import { wasm } from 'rolldown-plugin-wasm'
    import { defineConfig } from 'tsdown'
    
    export default defineConfig({
      entry: ['src/index.ts'],
      plugins: [wasm()],
    })
    

    Library with CSS and Sass

    export default defineConfig({
      entry: ['src/index.ts'],
      format: ['esm', 'cjs'],
      dts: true,
      target: 'chrome100',
      css: {
        preprocessorOptions: {
          scss: {
            additionalData: `@use "src/styles/variables" as *;`,
          },
        },
      },
    })
    

    Standalone Executable

    export default defineConfig({
      entry: ['src/cli.ts'],
      exe: true,
    })
    

    Cross-Platform Executable (requires @tsdown/exe)

    export default defineConfig({
      entry: ['src/cli.ts'],
      exe: {
        targets: [
          { platform: 'linux', arch: 'x64', nodeVersion: '25.7.0' },
          { platform: 'darwin', arch: 'arm64', nodeVersion: '25.7.0' },
          { platform: 'win', arch: 'x64', nodeVersion: '25.7.0' },
        ],
      },
    })
    

    Advanced with Hooks

    export default defineConfig({
      entry: ['src/index.ts'],
      format: ['esm', 'cjs'],
      dts: true,
      hooks: {
        'build:before': async (context) => {
          console.log('Building...')
        },
        'build:done': async (context) => {
          console.log('Build complete!')
        },
      },
    })
    

    Configuration Features

    Multiple Configs

    Export an array for multiple build configurations:

    export default defineConfig([
      {
        entry: ['src/index.ts'],
        format: ['esm', 'cjs'],
        dts: true,
      },
      {
        entry: ['src/cli.ts'],
        format: ['esm'],
        platform: 'node',
      },
    ])
    

    Conditional Config

    Use functions for dynamic configuration:

    export default defineConfig((options) => {
      const isDev = options.watch
      return {
        entry: ['src/index.ts'],
        format: ['esm', 'cjs'],
        minify: !isDev,
        sourcemap: isDev,
      }
    })
    

    Workspace/Monorepo

    Use glob patterns to build multiple packages:

    export default defineConfig({
      workspace: 'packages/*',
      entry: ['src/index.ts'],
      format: ['esm', 'cjs'],
      dts: true,
    })
    

    CLI Quick Reference

    # Basic commands
    tsdown                          # Build once
    tsdown --watch                  # Watch mode
    tsdown --config custom.ts       # Custom config
    npx tsdown-migrate              # Migrate from tsup
    
    # Output options
    tsdown --format esm,cjs        # Multiple formats
    tsdown -d lib                  # Custom output directory (--out-dir)
    tsdown --minify                # Enable minification
    tsdown --dts                   # Generate declarations
    tsdown --exe                   # Bundle as standalone executable
    tsdown --unbundle              # Bundleless mode
    
    # Entry options
    tsdown src/index.ts            # Single entry
    tsdown src/*.ts                # Glob patterns
    tsdown src/a.ts src/b.ts       # Multiple entries
    
    # Workspace / Monorepo
    tsdown -W                      # Enable workspace mode
    tsdown -W -F my-package        # Filter specific package
    tsdown --filter /^pkg-/        # Filter by regex
    
    # Development
    tsdown --watch                 # Watch mode
    tsdown --sourcemap             # Generate source maps
    tsdown --clean                 # Clean output directory
    tsdown --from-vite             # Reuse Vite config
    tsdown --tsconfig tsconfig.build.json  # Custom tsconfig
    

    Best Practices

    1. Always generate type declarations for TypeScript libraries:

      { dts: true }
      
    2. Externalize dependencies to avoid bundling unnecessary code:

      { deps: { neverBundle: [/^react/, /^@myorg\//] } }
      
    3. Use tree shaking for optimal bundle size:

      { treeshake: true }
      
    4. Enable minification for production builds:

      { minify: true }
      
    5. Add shims for better ESM/CJS compatibility:

      { shims: true }  // Adds __dirname, __filename, etc.
      
    6. Auto-generate package.json exports:

      { exports: true }  // Creates proper exports field
      
    7. Use watch mode during development:

      tsdown --watch
      
    8. Preserve structure for utilities with many files:

      { unbundle: true }  // Keep directory structure
      
    9. Validate packages in CI before publishing:

      { publint: 'ci-only', attw: 'ci-only' }
      

    Resources

    Reproducido de antfu/skills bajo licencia MIT. Leer esta página en markdown.

    Archivos

    42 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere Node.js 22.18.0 o superior para ejecutarse en build (el output puede seguir apuntando a versiones de Node más bajas).

    Necesita en el PATH:npxpnpm

    Detalles

    Creador
    antfu
    Licencia
    MIT
    Recursos incluidos
    referencias
    Repositorio
    antfu/skills
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de antfu/skills

    Este repo incluye 19 skills. Si instalas uno, normalmente ya tienes los demás. Ver el pack skills entero y su comando de instalación

    Antfu

    5.9k

    Herramientas y convenciones de Anthony Fu para proyectos JavaScript/TypeScript: configuración de ESLint, monorepos y publicación de librerías.

    Costo de contexto al activarse
    1.3k tok
    Tamaño del paquete
    6 archivos
    Última actualización
    hace 3 meses
    herramientas desarrollo

    Convenciones de diseño estilo antfu: tokens semánticos basados en clases con UnoCSS para light/dark, más reglas anti-slop y de micro-interacción para devtools y landing pages.

    Costo de contexto al activarse
    1.3k tok
    Tamaño del paquete
    15 archivos
    Última actualización
    hace 3 meses
    diseno ui

    Nitro

    5.9k

    Nitro es el toolkit de servidor agnóstico de framework (usado por Nuxt) para construir y desplegar servidores web en cualquier lugar: routing, config, caching, tasks, websockets y despliegue en Node/Bun/Deno/Cloudflare/Vercel.

    Costo de contexto al activarse
    880 tok
    Tamaño del paquete
    15 archivos
    Última actualización
    hace 3 meses
    desarrollo apis

    Nuxt

    5.9k

    Framework full-stack Vue con SSR, auto-imports y routing basado en archivos. Úsalo para apps Nuxt, server routes, useFetch, middleware o hybrid rendering.

    Costo de contexto al activarse
    977 tok
    Tamaño del paquete
    20 archivos
    Última actualización
    hace 3 meses
    herramientas desarrollo

    Pnpm

    5.9k

    Gestor de paquetes de Node.js con resolución estricta de dependencias. Úsalo para comandos de pnpm, pnpm-workspace.yaml, catalogs, patches, overrides, config dependencies o el global virtual store.

    Costo de contexto al activarse
    1k tok
    Tamaño del paquete
    18 archivos
    Última actualización
    hace 3 meses
    herramientas desarrollo

    Slidev

    5.9k

    Crea y presenta slidedecks web para desarrolladores con Slidev, usando Markdown, componentes Vue, resaltado de código, animaciones y funciones interactivas.

    Costo de contexto al activarse
    2.2k tok
    Tamaño del paquete
    56 archivos
    Última actualización
    hace 3 meses
    documentos

    Skills relacionados

    Optimiza la configuración del contexto del agente. Úsalo al iniciar una sesión nueva, cuando la calidad del agente empeora, al cambiar de tarea o al configurar archivos de reglas y contexto de un proyecto.

    Costo de contexto al activarse
    3.9k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    herramientas desarrollo

    Gestiona la baja y migración de sistemas: retirar APIs o funciones antiguas, migrar usuarios a una nueva implementación, migrar un esquema de BD en producción (expand/contract) sin downtime, o decidir si mantener o retirar código.

    Costo de contexto al activarse
    3.2k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    herramientas desarrollo

    Estructura las prácticas de flujo de trabajo en git: commits, ramas, resolver conflictos, dividir trabajo sin confirmar en commits atómicos, PRs, push, trabajo en paralelo, releases, versión semántica, tags y changelog.

    Costo de contexto al activarse
    3.5k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 2 meses
    herramientas desarrollo