Docklet is a tiny, zero-dependency TypeScript library for resolving and building base URLs across runtimes — Browser, Node, Bun, and Deno.
It’s framework-agnostic, deterministic, and supports optional adapters for import.meta.env.
# Using Bun
bun add docklet
# Using npm
npm i dockletimport { getBaseUrl, buildUrl } from "docklet"
// KAZVIZIAN_BASE_URL=https://api.example.com
const url = buildUrl(getBaseUrl(), "v1", "users")setBaseUrl(url?)/getBaseUrl(preferred?)setBaseUrlFor(name, url?)/getBaseUrlFor(name, preferred?)buildUrl(base, ...parts)createBaseUrlManager(initial?)setBaseUrlFromImportMetaEnv(env, options?)
- Preferred argument
- In-memory override
globalThis.KAZVIZIAN_BASE_URLS- Environment variables (
NAME_BASE_URL,KAZVIZIAN_BASE_URL,BASE_URL) - Adapter (
import.meta.env) - Fallback: empty string
Vite
import { setBaseUrlFromImportMetaEnv } from "docklet"
setBaseUrlFromImportMetaEnv(import.meta.env)Multiple Services
import { setBaseUrlFor, getBaseUrlFor, buildUrl } from "docklet"
setBaseUrlFor("content", "https://content.example.com")
const url = buildUrl(getBaseUrlFor("content"), "assets", "logo.png")Automated versioning and publishing are handled via GitHub Actions:
- Automatic release on push/merge to
mainusingsemantic-release - Manual release via workflow dispatch (
release-manual.yml) with dry-run and dist-tag options
- Repository secrets:
NPM_TOKEN(automation token) andGITHUB_TOKEN - Use Conventional Commits for semantic versioning
bun run build
bun test
bun x semantic-release --dry-runMIT © KazViz