Skip to content

⚡️ Scaffolding tool for Rolldown library projects - a fast JavaScript bundler written in Rust.

License

Notifications You must be signed in to change notification settings

Sunny-117/create-rolldown

Repository files navigation

create-rolldown 🔧

⚡️ Scaffolding tool for Rolldown library projects - a fast JavaScript bundler written in Rust, with TypeScript support and multiple framework templates

npm version npm downloads bundle License test coverage

Features

  • 🚀 Fast Setup - Create a new Rolldown project in seconds
  • 🎨 TypeScript First - All templates use TypeScript by default
  • 📦 Library Development Focus - Templates designed for building and publishing JavaScript/TypeScript libraries, component libraries, and utility packages
  • 🎮 Playground Included - Framework templates include a Vite-powered playground for development and testing
  • 🔧 Interactive & Non-Interactive Modes - Flexible usage for both manual and automated workflows
  • 📦 Smart Package Manager Detection - Automatically detects and uses your preferred package manager (npm, pnpm, yarn, bun)
  • Immediate Start - Optional flag to install dependencies and start playground immediately

Installation

npm create rolldown@latest
# or
pnpm create rolldown
# or
yarn create rolldown
# or
bun create rolldown

Quick Start

Method 1: Interactive Mode (Recommended)

Simply run the command and follow the prompts:

npm create rolldown@latest

You'll be prompted to:

  1. Enter a project name
  2. Choose a framework (Vanilla, React, Vue, Solid, or Svelte)
  3. Optionally install dependencies and start the playground immediately

Method 2: Non-Interactive Mode

For automated workflows or CI/CD pipelines:

# Create a project with all options specified
npm create rolldown@latest my-lib -- --template react --no-interactive

# With immediate install and start
npm create rolldown@latest my-lib -- --template vue --immediate --no-interactive

# Overwrite existing directory
npm create rolldown@latest my-lib -- --template solid --overwrite --no-interactive

Supported Templates

Template Description Use Cases Playground
vanilla Vanilla TypeScript library Utility libraries, tools, helpers
react React library with TypeScript React components, hooks, utilities ✅ Vite
vue Vue 3 library with TypeScript Vue components, composables ✅ Vite
solid SolidJS library with TypeScript Solid components, primitives ✅ Vite
svelte Svelte 5 library with TypeScript Svelte components, actions ✅ Vite

Command Line Options

Usage: create-rolldown [project-name] [options]

Options:
  -t, --template <template>    Specify a template (vanilla, react, vue, solid, svelte)
  --overwrite                  Overwrite existing files in target directory
  -i, --immediate              Install dependencies and start playground immediately
  --interactive                Force interactive mode (default in TTY)
  --no-interactive             Force non-interactive mode (default in non-TTY)
  -h, --help                   Display this help message

How It Works

  1. Parse CLI arguments using mri
  2. Detect mode (interactive vs non-interactive based on TTY and flags)
  3. Collect configuration (project name, template, options)
  4. Validate inputs (package name format, directory conflicts)
  5. Copy template files to target directory
  6. Update files (package.json name, metadata)
  7. Optionally install dependencies and start playground

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

💛 MIT License © Sunny-117

Related Projects

  • Rolldown - Fast JavaScript bundler written in Rust
  • tsdown - TypeScript bundler built on Rolldown
  • create-vite - Inspiration for this project

About

⚡️ Scaffolding tool for Rolldown library projects - a fast JavaScript bundler written in Rust.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published