Vitus Labs
Tools Rollup

Tools Rollup

Rollup-based build tool for library packages — the predecessor to tools-rolldown.

@vitus-labs/tools-rollup is the legacy build tool using Rollup. For new projects, prefer tools-rolldown which uses the faster Rust-based Rolldown bundler.

Installation

npm install @vitus-labs/tools-rollup

Quick Start

{
  "scripts": {
    "build": "vl_build"
  }
}
bun run build

Comparison with tools-rolldown

Featuretools-rolluptools-rolldown
BundlerRollup v4Rolldown v1 (Rust)
CLI commandvl_buildvl_rolldown_build
TypeScriptrollup-plugin-typescript2 + ts-patchBuilt-in Rolldown TS
Type generation@microsoft/api-extractorrolldown-plugin-dts
Dependencies~15~6
Path transformstypescript-transform-pathsRolldown native

Both tools share the same configuration format (build key in vl-tools.config.mjs) and produce identical output formats.

CLI Commands

vl_build

Production build:

vl_build

vl_build-watch

Watch mode (development):

vl_build-watch

Configuration

Same config shape as tools-rolldown — uses the build key in vl-tools.config.mjs:

// vl-tools.config.mjs
export default {
  build: {
    sourceDir: 'src',
    outputDir: 'lib',
    typescript: true,
    replaceGlobals: true,
    filesize: true,
    visualise: {
      template: 'network',
      gzipSize: true,
      outputDir: 'analysis',
    },
  },
}

Plugin Pipeline

The Rollup build uses a 7-plugin pipeline:

OrderPluginConditionPurpose
1@rollup/plugin-node-resolveAlwaysResolve npm modules
2rollup-plugin-typescript2typescript: trueTypeScript compilation with ts-patch
3rollup-plugin-api-extractorWhen types neededConsolidate .d.ts files
4@rollup/plugin-replacereplaceGlobals: trueInject platform constants
5rollup-plugin-visualizerWhen visualise setBundle visualization
6@rollup/plugin-terserProduction envMinification
7rollup-plugin-filesizefilesize: trueConsole size reporting

TypeScript Compilation

Uses ts-patch compiler with two transforms:

  1. typescript-transform-paths — resolves path aliases in compiled JS
  2. typescript-transform-paths (afterDeclarations) — resolves aliases in .d.ts files

Type Generation

Uses @microsoft/api-extractor to consolidate all .d.ts files into a single rolled-up declaration file. Only the first build variant generates types.

Output Formats

FormatExportsNameUse Case
esModern ESM consumers
cjsnamedCommonJS/Node.js
umdnamedPKG.bundleNameBrowser <script> tags

Platform Globals

Same as tools-rolldown — injects __VERSION__, __WEB__, __NATIVE__, __BROWSER__, __NODE__, __CLIENT__ based on platform.

Build Pipeline

Builds execute sequentially (not in parallel). The pipeline is determined from package.json fields following the same logic as tools-rolldown:

  1. exports field (preferred) → determines format and platform per condition
  2. main/module/react-native fields (fallback)
  3. browser field → separate build variant if differs from main

On this page