mini-tsdown
v0.1.9
Published
A minimal TypeScript library bundler built with Rolldown
Maintainers
Readme
mini-tsdown
A minimal TypeScript library bundler built with Rolldown and Oxc, created for learning purposes.
Features
- 🚀 Fast bundling - Powered by Rolldown (Rust-based bundler)
- 📦 Multi-format output - ESM and CJS
- 📝 Type declarations - Automatic
.d.tsgeneration - 👀 Watch mode - Rebuild on file changes
- 🔌 Hook system - Customize build lifecycle
- ⚙️ Config file support -
.ts,.js,.json
Installation
pnpm add -D mini-tsdownUsage
CLI
# Basic usage
npx mini-tsdown src/index.ts
# With options
npx mini-tsdown src/index.ts --format esm --format cjs --dts
# Watch mode
npx mini-tsdown src/index.ts --watchCLI Options
| Option | Description |
|--------|-------------|
| -o, --out-dir <dir> | Output directory (default: dist) |
| -f, --format <format> | Output format: esm or cjs |
| --dts | Generate TypeScript declarations |
| --sourcemap | Generate sourcemap |
| --minify | Minify output |
| -w, --watch | Enable watch mode |
| --external <pkg> | Mark packages as external |
Configuration
Create mini-tsdown.config.ts in your project root:
import { defineConfig } from 'mini-tsdown'
export default defineConfig({
entry: 'src/index.ts',
outDir: 'dist',
format: ['esm', 'cjs'],
dts: true,
sourcemap: true,
external: ['some-external-package'],
// Lifecycle hooks
hooks: {
'build:prepare': (ctx) => {
console.log('Building...', ctx.options.entry)
},
'build:done': () => {
console.log('Build complete!')
},
},
})Programmatic API
import { build, defineConfig } from 'mini-tsdown'
await build({
entry: 'src/index.ts',
format: ['esm', 'cjs'],
dts: true,
})Hooks
mini-tsdown provides three lifecycle hooks:
| Hook | Description |
|------|-------------|
| build:prepare | Called before any build starts |
| build:before | Called before each Rolldown build |
| build:done | Called after build completes |
Project Structure
src/
├── cli.ts # CLI entry point
├── index.ts # Core build logic
├── config.ts # Config file loader
├── hooks.ts # Hook system
├── types.ts # TypeScript definitions
└── main.ts # Public API exportsBuild mini-tsdown with itself
pnpm buildThis will:
- Build
src/main.ts→dist/main.mjs+dist/main.d.mts - Build
src/cli.ts→dist/cli.mjs
License
MIT
