Skip to main content

Duck Registry Build

Extension-driven build system for component registries. Configurable pipeline, typed sources, and a UI preset ready to use.

Generic + extensible

The engine behind gentleduck registries

A config, a preset, and a pipeline of extensions. Use it for UI kits, icon sets, or any domain you can model as a registry.

Extension-driven

The builder runs a pipeline of extensions. Use `uiRegistryPreset()` for the standard UI path, or write your own for any domain.

defineConfig()

One config entry types your sources, package mappings, and registry entries. Typos fail as TypeScript errors.

Sources + targets

Map each registry namespace to a source folder, a package name, and a reference path. The builder resolves imports across workspaces.

Schema validation

Every registry item is validated as a `registry:*` namespace string. The same rule runs across sources, mappings, and schemas.

Cache-aware pipeline

Phased build context with an integrated cache. Only touched registries re-run, so big registries still finish in seconds.

Testing + CI

Built-in extensions for banners, colors, component index, and validation. Output hooks drop into any CI job.

Install

Add a `registry-build.config.ts`, run the CLI, ship a registry.

# Install
bun add -D @gentleduck/registry-build

# Build your registry
bunx registry-build build

Free & open source

gentleduck is MIT licensed and will always be free and open source. Every package ships with full source access — fork it, modify it, own it.

Become a Sponsor