LogoRelidocs

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, or dler --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: both upgrade and update will update dler itself β€” globally and in your dependencies or devDependencies if run inside a project with a package.json β€” depends on how dler is installed.

contributors

helper scripts

  • libs:pack: Creates two templates, cfg and sdk, based on dist-libs directory structure (using dler pack command).
  • libs:unpack: Creates a project structure using all templates from the cfg and sdk templates (using dler unpack command).
  • libs:example: Since libs:unpack's serves as a dist-libs mock, then libs:example helps easily test dler's features like resolveAllCrossLibs().

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 and dlergo are temporary names for the experimental rust and go binaries, they will be probably changed to dler 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 single docs 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 and hooksAfterBuild 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 using bun, 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 both bun and dler own commands and flags
  • fully support deno and jsr

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