CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-tsdown

The Elegant Bundler for Libraries built on Rolldown with TypeScript support, comprehensive plugin ecosystem, and zero-configuration setup

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

tsdown

tsdown is a modern JavaScript/TypeScript bundler for libraries built on top of Rolldown (powered by Oxc). It serves as a high-performance alternative to tsup, offering blazing fast builds with declaration file generation, comprehensive plugin ecosystem support (Rollup, Rolldown, unplugin, and some Vite plugins), and zero-configuration setup for immediate productivity.

Package Information

  • Package Name: tsdown
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install tsdown

Core Imports

import { build, defineConfig } from "tsdown";

For CommonJS:

const { build, defineConfig } = require("tsdown");

For plugins:

import { ExternalPlugin, ShebangPlugin, ReportPlugin, NodeProtocolPlugin } from "tsdown/plugins";

For CLI usage:

npx tsdown [files]

Basic Usage

import { build, defineConfig } from "tsdown";

// Simple build with defaults
await build({
  entry: "src/index.ts",
  format: ["esm", "cjs"],
  dts: true
});

// Using defineConfig for type safety
export default defineConfig({
  entry: "src/index.ts",
  format: ["esm", "cjs"],
  outDir: "dist",
  dts: true,
  sourcemap: true,
  clean: true
});

Architecture

tsdown is built around several key components:

  • Core Build Engine: Powered by Rolldown (Oxc) for maximum performance and modern JavaScript/TypeScript support
  • Configuration System: Zero-config defaults with extensive customization options via defineConfig
  • Plugin Ecosystem: Compatible with Rollup, Rolldown, unplugin, and select Vite plugins
  • TypeScript Integration: Built-in TypeScript support with automatic declaration file generation
  • Workspace Support: Monorepo and workspace capabilities for multi-package projects
  • CLI Interface: Command-line tool with comprehensive options and migration utilities
  • Quality Assurance: Integration with publint, Are The Types Wrong, and unused dependency checking

Capabilities

Core Build System

Main build functionality for bundling TypeScript/JavaScript libraries with Rolldown. Supports multiple output formats, TypeScript declaration generation, and extensive configuration options.

function build(userOptions?: Options): Promise<void>;

interface Options {
  entry?: InputOption;
  format?: Format | Format[];
  outDir?: string;
  dts?: boolean | DtsOptions;
  sourcemap?: boolean | 'inline' | 'hidden';
  clean?: boolean | string[];
  // ... extensive options interface
}

type Format = 'es' | 'cjs' | 'iife' | 'umd';

Build System

Configuration Management

Type-safe configuration system with defineConfig helper and extensive options for customizing the build process.

function defineConfig(options: UserConfig): UserConfig;
function defineConfig(options: UserConfigFn): UserConfigFn;

type UserConfig = Arrayable<Omit<Options, 'config' | 'filter'>>;
type UserConfigFn = (cliOptions: Options) => Awaitable<UserConfig>;

Configuration

Plugin System

Built-in plugins for common bundling tasks and integration with external plugin ecosystems.

function ExternalPlugin(options: ResolvedOptions): Plugin;
function ShebangPlugin(logger: Logger, cwd: string, name?: string, isMultiFormat?: boolean): Plugin;
function ReportPlugin(options: ReportOptions, logger: Logger, cwd: string, cjsDts?: boolean, name?: string, isMultiFormat?: boolean): Plugin;
function NodeProtocolPlugin(nodeProtocolOption: 'strip' | true): Plugin;

Plugin System

CLI Interface

Command-line interface with comprehensive options for building, watching, and managing projects.

function runCLI(): Promise<void>;

Available CLI commands:

  • tsdown [files] - Build command with extensive options
  • tsdown migrate - Migration utility from tsup to tsdown

CLI Interface

Workspace Support

Multi-package support for monorepos with filtering and configuration management.

interface Workspace {
  include?: Arrayable<string> | 'auto';
  exclude?: Arrayable<string>;
  config?: boolean | string;
}

Workspace Support

Migration Tools

Built-in migration utilities for moving from tsup to tsdown with automatic configuration conversion.

function migrate(options: { cwd?: string; dryRun?: boolean }): Promise<void>;

Migration Tools

Types

// Core types
type Sourcemap = boolean | 'inline' | 'hidden';
type Format = 'es' | 'cjs' | 'iife' | 'umd';
type NormalizedFormat = 'es' | 'cjs' | 'iife' | 'umd';

// Platform and target types
type Platform = 'node' | 'neutral' | 'browser';

// Module types for file processing
type ModuleTypes = Record<string, 'js' | 'jsx' | 'ts' | 'tsx' | 'json' | 'text' | 'base64' | 'dataurl' | 'binary' | 'empty' | 'css' | 'asset'>;

// Logging types
type LogLevel = 'silent' | 'error' | 'warn' | 'info';

interface Logger {
  info(...args: any[]): void;
  warn(...args: any[]): void;
  error(...args: any[]): void;
  success(...args: any[]): void;
}

// Utility types
type Arrayable<T> = T | T[];
type Awaitable<T> = T | Promise<T>;
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/tsdown@0.14.x
Publish Source
CLI
Badge
tessl/npm-tsdown badge