Your dependencies, naked.
Manage client-side dependencies with npm install, then import them by name — no bundler, no build step, no CDN.
-
No bundling, no transpilation
Neither your code nor your dependencies need a build step. Already transpiling? That works too.
-
Local-first
Your dependencies are served from your own domain. No external requests, no CDN, no extra points of failure.
-
Granular cache busting
Versioned directory names give you CDN-grade caching. Updating one module leaves every other module cached.
-
Self regenerating, sans watcher
npm lifecycle hooks keep everything up to date as dependencies change. Nothing to start, nothing to watch.
-
The web is not just JS
Stable, unversioned URLs for CSS, images, fonts and other package assets that can’t go through an import map (yet).
-
Even the edge cases
Dynamic
import(),import.meta.resolve(), CJS packages, local packages, git dependencies, npm aliases, npm workspaces all work.
Try it
npx nudeps install
npm install vue
That’s it — import { createApp } from "vue" now works in the browser. See Getting Started for the whole story.
Background
-
I ran the npx command and added the import map to my app, but I assumed that there was still a lot more work to do. I was shocked to realize I was done.
Sam Littlefair
Technical writer and Svelte developer