tsdown

rolldown/tsdown · Agent Skill

Соберите библиотеки TypeScript и JavaScript с помощью tsdown, включая объявления и сборки в нескольких форматах.

Перейти к установке ↓

Обзор

АвторrolldownОрганизация
Репозиторийrolldown/tsdown ↗
Папка скиллаtsdown
Звёзды4 322
Форки199
Файлы41
ЛицензияMIT
Обновлён23 октября 2026 г.
СсылкиИсходник скилла ↗ · Репозиторий ↗

Проверка Mozgi

Что мы нашли в файлах скилла. Подробности — по подписке.

Безопасность
средний риск · обнаружено 1 момент, требующий внимания
Совместимость
нужны дополнительные программы
Похожие скиллы
найдено 62 похожих скилла
Ещё в подписке

Установка

Скилл — это папка с файлом SKILL.md. Выберите своего агента и скопируйте команды в терминал (macOS, Linux или Git Bash на Windows) в корне проекта.

Скопируйте промпт и вставьте в Claude, Codex или другого ассистента: он сам проверит скилл и подключит его.

Установи мне скилл «tsdown» с mozgi.io (https://mozgi.io/skills/antfu-tsdown/).

1. Скачай архив: https://mozgi.io/skills/antfu-tsdown/download
   Если не скачивается — возьми папку скилла из исходника: https://github.com/rolldown/tsdown/tree/main/skills/tsdown
2. Прочитай SKILL.md и остальные файлы. Проверь, что скилл безопасен: нет скрытых команд, отправки данных наружу или скриптов, которые делают не то, что описано. Если что-то подозрительно — остановись и скажи мне.
3. Положи папку «tsdown» в папку скиллов своего агента: .claude/skills/ для Claude Code, .agents/skills/ для Codex, .cursor/skills/ для Cursor, .gemini/skills/ для Gemini CLI. В проекте — внутри проекта, иначе в домашней папке (~/.claude/skills/ и т. п.).
4. Убедись, что получилось <папка скиллов>/tsdown/SKILL.md.
5. Коротко расскажи, что умеет этот скилл, и предложи попробовать его на моей задаче.

Если какой-то шаг не можешь сделать сам — подскажи, что нажать или ввести.

Файлы скилла

41 файл Скачать ZIP

Просмотрите SKILL.md и сопутствующие файлы перед установкой. Клик по файлу — предпросмотр.

Содержимое SKILL.md

Оригинальный текст автора · только чтение

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 ↗ |

| Hooks | Lifecycle hooks for custom logic | advanced-hooks ↗ |

| Programmatic API | Build from Node.js scripts, in-memory builds (write: false) | advanced-programmatic ↗ |

| Rolldown Options | Pass options directly to Rolldown | advanced-rolldown-options ↗ |

| CI Environment | CI detection, 'ci-only' / 'local-only' values | advanced-ci ↗ |

> For comprehensive migration assistance with complete option mappings, install the dedicated tsdown-migrate skill: npx skills add rolldown/tsdown --skill tsdown-migrate

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, suppressWarnings: [...] | 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 ↗ |

| Only import | deps: { onlyImport: ['cac'] } - Whitelist runtime imports in output | option-dependencies ↗ |

| Externalize all | deps: { neverBundle: true } | option-dependencies ↗ |

| Resolve subpaths | deps: { resolveDepSubpath: true } - Resolve external subpath imports (default false) | 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 ↗ |

| Copy files | copy: 'public' or copy: { from, to, flatten, rename } - Copy static assets to output | option-copy ↗ |

| 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
tsdown --copy public           # Copy static files to output

# 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
tsdown -W --concurrency 4      # Limit parallel Rolldown builds

# 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:

```ts

{ dts: true }

```

2. Externalize dependencies to avoid bundling unnecessary code:

```ts

{ deps: { neverBundle: [/^react/, /^@myorg\//] } }

```

3. Use tree shaking for optimal bundle size:

```ts

{ treeshake: true }

```

4. Enable minification for production builds:

```ts

{ minify: true }

```

5. Add shims for better ESM/CJS compatibility:

```ts

{ shims: true } // Adds __dirname, __filename, etc.

```

6. Auto-generate package.json exports:

```ts

{ exports: true } // Creates proper exports field

```

7. Use watch mode during development:

```bash

tsdown --watch

```

8. Preserve structure for utilities with many files:

```ts

{ unbundle: true } // Keep directory structure

```

9. Validate packages in CI before publishing:

```ts

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

```

Resources

  • Documentation: https://tsdown.dev
  • GitHub: https://github.com/rolldown/tsdown
  • Rolldown: https://rolldown.rs
  • Migration Guide: https://tsdown.dev/guide/migrate-from-tsup

Вопросы и ответы

Что делает скилл tsdown?

Соберите библиотеки TypeScript и JavaScript с помощью tsdown, включая объявления и сборки в нескольких форматах.

Как установить tsdown?

Откройте блок «Установка» на этой странице и выберите своего агента — Claude Code, Codex, Cursor или Gemini CLI: там готовые команды, которые копируют папку скилла в нужное место. Либо скопируйте промпт из вкладки «Через ассистента» — ассистент сам проверит и подключит скилл.

С какими нейросетями работает tsdown?

Скиллы — это обычные инструкции в Markdown (формат Agent Skills), поэтому tsdown подходит любому агенту, который читает SKILL.md: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode и другие. Модель загружает инструкции только когда задача подходит под описание скилла.

Скилл tsdown бесплатный?

Скилл опубликован автором rolldown в открытом доступе под лицензией MIT. Сам скилл ничего не стоит — вы платите только своему провайдеру нейросети за использованные токены.

Безопасно ли устанавливать скиллы?

Скилл — это инструкции, которые агент будет выполнять, поэтому перед установкой прочитайте SKILL.md и сопутствующие файлы. Скрипты из папки скилла запускаются только если их запустит агент — следите за тем, что он делает, и не давайте лишних прав.

Чем скилл отличается от MCP-сервера или плагина?

MCP-сервер и плагин дают модели новые инструменты — код, который выполняется и возвращает результат. Скилл даёт знания и порядок действий: как подходить к задаче, какие шаги делать и как выглядит хороший результат. Ему не нужен сервер или ключ API.

Похожие скиллы

Все скиллы →