v0.3 · browser & framework support

One package.
Every library.

Lazy-load and auto-install any npm module through a single namespace. No bundler glue. No dependency list. Just use it.

$ npm install entirety
~/my-app · node index.js
// No installs. No imports. Just run.
import Entirety from "entirety";

await Entirety.Lodash.camelCase("hello world");
[entirety] installing lodash via npm…
→ "helloWorld"

await Entirety.Axios.get("https://api.github.com/zen");
[entirety] installing axios via npm…
→ "Non-blocking I/O is better than blocking I/O."

await Entirety.use("nanoid").nanoid();
[entirety] installing nanoid via npm…
→ "V1StGXR8_Z5jdHi6B-myT"
Three ideas. One package.

Built on primitives
you already trust.

Lazy by default.

Property access defers to import(). Unused libraries cost exactly zero at runtime.

It installs itself.

Missing package? Entirety detects your pm — npm, pnpm, yarn, bun — runs the install, and retries the import. Transparently.

Every package, one namespace.

Entirety.Lodash. Entirety.Axios. Or Entirety.use("anything"). Same ergonomics for the whole ecosystem.

Before / After

Less boilerplate.
More doing.

Before
import _ from "lodash";
import axios from "axios";
import dayjs from "dayjs";
import { nanoid } from "nanoid";
import { z } from "zod";
// + npm install every one of them
// + remember which exports are named
// + remember which are default
// + remember which need peer deps

Five imports. Five installs. Five shapes to memorize.

After
import Entirety from "entirety";

// That's the whole import section.

await Entirety.Lodash.camelCase(x);
await Entirety.Axios.get(url);
await Entirety.use("dayjs");
await Entirety.use("nanoid").nanoid();
await Entirety.use("zod").z.string();

One import. One install. Entirety handles the rest on first access.

Ready when you are

Start using entirety
in under 30 seconds.

Works on Node 20+. ESM native. No build step required.

$ npm install entirety