Duck Registry Build
Extension-driven build system for component registries. Configurable pipeline, typed sources, and a UI preset ready to use.
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 buildFree & 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.