robuild

Zero-config ESM/TS package builder powered by Rolldown and Oxc. Use when building TypeScript libraries, generating type declarations, bundling for multiple formats, or migrating from tsup/unbuild.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "robuild" with this command: npx skills add sunny-117/robuild/sunny-117-robuild-robuild

robuild - Zero-Config Package Builder

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

When to Use

  • Building TypeScript/JavaScript libraries for npm
  • Generating TypeScript declaration files (.d.ts)
  • Bundling for multiple formats (ESM, CJS, IIFE)
  • Zero-config builds with sensible defaults
  • Transforming directories without bundling
  • Auto-generating package.json exports field
  • Migrating from tsup or unbuild

Quick Start

# Install
pnpm add -D robuild

# Basic usage (auto-detects src/index.ts)
npx robuild

# With specific entry
npx robuild ./src/index.ts

# Multiple formats
npx robuild ./src/index.ts --format esm,cjs

# Watch mode
npx robuild --watch

# With DTS generation
npx robuild --dts

Basic Configuration

Entries-based (unbuild-style)

// build.config.ts
import { defineConfig } from 'robuild'

export default defineConfig({
  entries: [
    {
      type: 'bundle',
      input: './src/index.ts',
      format: ['esm', 'cjs'],
      dts: true,
    },
  ],
})

Flat config (tsup-style)

// build.config.ts
import { defineConfig } from 'robuild'

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

Core References

TopicDescriptionReference
Getting StartedInstallation, first bundle, CLI basicsguide-getting-started
ConfigurationConfig file formats, optionsguide-configuration
CLI ReferenceAll CLI commands and optionsreference-cli
PluginsRolldown plugin supportadvanced-plugins

Build Options

OptionUsageReference
Entry pointsinput: './src/index.ts' or entry: ['src/*.ts']option-entry
Output formatsformat: ['esm', 'cjs', 'iife']option-format
Output directoryoutDir: 'dist'option-output
Type declarationsdts: trueoption-dts
Platformplatform: 'node' or platform: 'browser'option-platform
External depsexternal: ['react'] or noExternal: ['lodash']option-external
Package exportsgenerateExports: true, exports: { enabled: true }option-exports

Entry Types

Bundle Entry

Uses Rolldown for bundling:

{
  type: 'bundle',
  input: './src/index.ts',    // Entry point(s)
  format: ['esm', 'cjs'],     // Output formats
  outDir: 'dist',             // Output directory
  dts: true,                  // Generate .d.ts
  minify: false,              // Minify output
  platform: 'node',           // Target platform
  target: 'es2022',           // ECMAScript target
  external: [],               // External dependencies
  noExternal: [],             // Force bundle dependencies
  plugins: [],                // Rolldown plugins
  generateExports: true,      // Generate exports field
  exportPath: '.',            // Custom export path
}

Transform Entry

Uses Oxc for file-by-file transformation:

{
  type: 'transform',
  input: './src',             // Source directory
  outDir: 'dist',             // Output directory
  minify: false,              // Minify output
}

Common Patterns

Basic Library Bundle

export default defineConfig({
  entries: [
    {
      type: 'bundle',
      input: './src/index.ts',
      format: ['esm', 'cjs'],
      dts: true,
    },
  ],
})

Multiple Entry Points

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

With Package Exports Generation

export default defineConfig({
  entries: [
    {
      type: 'bundle',
      input: './src/index.ts',
      format: ['esm', 'cjs'],
      dts: true,
      generateExports: true,
      exportPath: '.',
    },
    {
      type: 'bundle',
      input: './src/utils/index.ts',
      format: ['esm', 'cjs'],
      dts: true,
      generateExports: true,
      exportPath: './utils',
      clean: false,
    },
  ],
  exports: {
    enabled: true,
    includeTypes: true,
    autoUpdate: true,
  },
})

CLI Tool with Shebang

export default defineConfig({
  entries: [
    {
      type: 'bundle',
      input: './src/cli.ts',
      format: 'esm',
      platform: 'node',
      // Shebang is auto-preserved
    },
  ],
})

Browser Library (IIFE)

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

With ESM/CJS Shims

export default defineConfig({
  entries: [
    {
      type: 'bundle',
      input: './src/index.ts',
      format: ['esm', 'cjs'],
      shims: true,  // Add __dirname, __filename shims
    },
  ],
})

External Dependencies

export default defineConfig({
  entries: [
    {
      type: 'bundle',
      input: './src/index.ts',
      format: ['esm', 'cjs'],
      external: ['react', 'react-dom', /^@myorg\//],
      noExternal: ['lodash-es'],  // Force bundle
    },
  ],
})

With Rolldown Plugins

import { defineConfig } from 'robuild'
import somePlugin from 'some-rolldown-plugin'

export default defineConfig({
  entries: [
    {
      type: 'bundle',
      input: './src/index.ts',
      format: ['esm'],
      plugins: [somePlugin()],
      // Or via rolldown passthrough
      rolldown: {
        plugins: [anotherPlugin()],
      },
    },
  ],
})

Transform Mode (Preserve Structure)

export default defineConfig({
  entries: [
    {
      type: 'transform',
      input: './src',
      outDir: 'dist',
    },
  ],
})

Stub Mode (Development)

export default defineConfig({
  entries: [
    {
      type: 'bundle',
      input: './src/index.ts',
      stub: true,  // Fast dev builds
    },
  ],
})

CLI Quick Reference

# Basic commands
robuild                           # Build once
robuild --watch                   # Watch mode
robuild --config custom.ts        # Custom config

# Entry options
robuild src/index.ts              # Single entry
robuild src/a.ts src/b.ts         # Multiple entries

# Output options
robuild --format esm,cjs          # Multiple formats
robuild --outDir lib              # Custom output directory
robuild --minify                  # Enable minification
robuild --dts                     # Generate declarations

# Development
robuild --watch                   # Watch mode
robuild --sourcemap               # Generate source maps
robuild --clean                   # Clean output directory

# Package exports
robuild --generate-exports        # Generate package.json exports

Configuration Options

Global Options

{
  // Working directory
  cwd: process.cwd(),

  // Output directory (default: 'dist')
  outDir: 'dist',

  // Output format(s)
  format: 'esm',  // or ['esm', 'cjs']

  // Target platform
  platform: 'node',  // or 'browser'

  // ECMAScript target
  target: 'es2022',

  // Clean output before build
  clean: true,

  // Generate source maps
  sourcemap: false,

  // Minify output
  minify: false,

  // Type declarations
  dts: false,

  // Exports generation
  exports: {
    enabled: false,
    includeTypes: true,
    autoUpdate: true,
  },

  // Post-build callback
  onSuccess: async () => {},

  // Fail on warnings
  failOnWarn: false,

  // Watch mode ignore patterns
  ignoreWatch: [],
}

Best Practices

  1. Always generate type declarations for TypeScript libraries:

    { dts: true }
    
  2. Use multi-format builds for maximum compatibility:

    { format: ['esm', 'cjs'] }
    
  3. Externalize peer dependencies:

    { external: ['react', 'react-dom'] }
    
  4. Enable exports generation for proper package.json:

    { generateExports: true, exports: { enabled: true } }
    
  5. Use watch mode during development:

    robuild --watch
    
  6. Clean output before production builds:

    { clean: true }
    
  7. Use transform mode for utilities with many files:

    { type: 'transform', input: './src' }
    

Resources

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

openclaw-version-monitor

监控 OpenClaw GitHub 版本更新,获取最新版本发布说明,翻译成中文, 并推送到 Telegram 和 Feishu。用于:(1) 定时检查版本更新 (2) 推送版本更新通知 (3) 生成中文版发布说明

Archived SourceRecently Updated
Coding

ask-claude

Delegate a task to Claude Code CLI and immediately report the result back in chat. Supports persistent sessions with full context memory. Safe execution: no data exfiltration, no external calls, file operations confined to workspace. Use when the user asks to run Claude, delegate a coding task, continue a previous Claude session, or any task benefiting from Claude Code's tools (file editing, code analysis, bash, etc.).

Archived SourceRecently Updated
Coding

ai-dating

This skill enables dating and matchmaking workflows. Use it when a user asks to make friends, find a partner, run matchmaking, or provide dating preferences/profile updates. The skill should execute `dating-cli` commands to complete profile setup, task creation/update, match checking, contact reveal, and review.

Archived SourceRecently Updated
Coding

clawhub-rate-limited-publisher

Queue and publish local skills to ClawHub with a strict 5-per-hour cap using the local clawhub CLI and host scheduler.

Archived SourceRecently Updated