dler
extend your bun/pnpm/yarn/npm usage
𧬠dler ⒠extend your bun/pnpm/yarn/npm usage
sponsor β discord β github β npm
@reliverse/dler (formerly relidler;
/ΛdiΛ.lΙr/
, dealer) is like nextjs, but for libraries and cli tools development. it is both a unified package manager for typescript/javascript projects and a flexible framework for creating, building, and publishing js/ts libraries to npm and jsr.dler is your package managerβs best friend β it extends bun, deno (π), pnpm, yarn, and npm with powerful and modern features.
at its core, dler is a flexible and fully automated bundler that also doubles as an npm/jsr publishing tool. beyond bundling, dler provides a rich codemod toolkit designed for modern typescript/javascript development.
dler-sdk serves also like a terminal component library, its like shadcn but for libraries and cli tools.
features
- drop-in
unjs/unbuild
support with extended capabilities like publishing - automated publishing to npm and jsr with smart workflow orchestration
- reliable builds with robust typescript/javascript support and error handling
- smart versioning with semantic release and automatic version bumping
- zero-config setup β forget about
package.json
maintenance - built-in bun environment when used as a standalone cli app
- performance-optimized using fast build pipelines and aggressive caching
- 17 built-in commands β see dler commands for everything it can do
- path alias resolution β automatically rewrites tsconfig aliases to relative imports
- configurable by design β dedicated config files with sane defaults
- dual interface β use via cli or import as sdk for programmatic use
- clean dist output β strips internal logs and debug code automatically
- monorepo support with experimental
libs
mode for multi-library setups - magic spells β plugin system for custom build logic and extensions
- codemod toolkit β powerful code transformation utilities out of the box
- full monorepo system with optimized cross-package dependency handling
- esp. designed for cli tool creators, project bootstrappers (like rse)
- perfect for anyone who wants their package manager to have sweet powers
getting started
before using dler, make sure you have git, node.js, and a supported package manager installed β bun is highly recommended for the best experience.
0. try the playground
π‘ tip curious to see dler in action before integrating it into your project? clone the repo and try e.g.
bun dler build
to build dler using... dler itself!
git clone https://github.com/reliverse/dler.git
cd dler
bun i
bun dler build # runs dler bun ts edition from source (cli entry: npm/dler.ts)
1. install dler
it is recommended to install dler both globally and as a dev dependency:
- global install β
bun add -g @reliverse/dler
β lets you use dler anywhere, like a system-level cli. - dev dependency β
bun add -D @reliverse/dler
β pins the version per project, so all contributors use the same version.
instead of global install, you can alternatively install dler as a standalone binary: bunx @reliverse/dler
usage depends on how dler is installed:
dler
β if installed globally (or as standalone binary)bun dler
β if installed as a dev dependency
2. initialize dler config
first-time dler run initializes config, repeatable runs launches dler interactive menu.
bun dler # if installed locally
dler # if installed globally
this creates a starter config file: .config/dler.ts
-
it is recommended to tweak the config to match your project structure
-
example config: .config/dler.ts β
-
useful options:
buildPreExtensions
: support additional file types like["ts", "js", "vue", "tsx", "jsx"]
buildTemplatesDir
: exclude a directory from being built; it will be copied as-is (e.g.src/foo/templates β dist-*/bin/foo/templates
)
3. run and enjoy
bun dler [build|pub|--help] # if local
dler [build|pub|--help] # if global
π‘ run
dler
for an interactive menu, ordler --help
for full command list.
4. upgrade your dev tools
keeping your tools fresh is always a good practice.
the command below upgrades not just dler, but also your local setup β including git
, node.js
, bun
, npm
, yarn
, pnpm
, and more.
just run:
bun dler upgrade
β οΈ donβt confuse this with
dler update
, which upgrades your project dependencies and global packages, not your system tools. π note: bothupgrade
andupdate
will update dler itself β globally and in yourdependencies
ordevDependencies
if run inside a project with apackage.json
β depends on how dler is installed.
contributors
helper scripts
libs:pack
: Creates two templates,cfg
andsdk
, based on dist-libs directory structure (using dler pack command).libs:unpack
: Creates a project structure using all templates from thecfg
andsdk
templates (using dler unpack command).libs:example
: Sincelibs:unpack
's serves as a dist-libs mock, thenlibs:example
helps easily test dler's features likeresolveAllCrossLibs()
.
how to build
ts bun binaries
bun dler build binary
rust binaries
cargo build --release # release build is used for publishing
cargo build # debug build is used for development testing
notes
dlerust
anddlergo
are temporary names for the experimental rust and go binaries, they will be probably changed todler
in the future (or... maybe not π )<src | dist-npm | dist-jsr>/libs/<lib-name>/<files live here>
===dist-libs/<lib-name>/<jsr | npm>/bin/<files live here>
todo
-
dist-*
->dist/dist-*
- implement stable
regular
build and publish - implement stable
library
build and publish - achieve full drop-in replacement for
unbuild
- support auto migration from
build.config.ts
- support configuration via
.config/rse.{ts,jsonc}
π€ - make config file fully optional with sensible defaults
- use
dler remdn
(@reliverse/remdn) to generate npm/jsr specific readme and a singledocs
dir for a whole project (only readmes will be published, docs are only stored in project's source cpde and can be deployed to user's website) - allow plugins to extend dler's
defineconfig
(hooksBeforeBuild
andhooksAfterBuild
are now available, plugin's options can be passed directly to plugin's params, e.g.hooksBeforeBuild: [ async () => { await myCoolPlugin({ /* plugin's options */ }); } ],
) - at the moment any bundler like
mkdist
can be called usingbun
, but bun's own bundler is not yet fully supported - support all well-known package managers (currently only bun is fully supported)
-
dler <command> [...flags] [...args]
usage should support bothbun
anddler
own commands and flags - fully support deno and jsr
related
special thanks to the project that inspired @reliverse/dler
:
support
- if dler saves you time and effort, please consider supporting its development: github sponsors;
- even a simple star on github shows your love. thank you!
license
π©· mit Β© 2025 blefnk nazar kornienko