Nub and Vite+ overlap on the everyday Node workflow — both run your package.json scripts, both run package binaries, and both provision the right Node version for a project on the fly — but their goals are ultimately very different. Nub is a better developer experience on top of stock node; Vite+ is the integrated frontend toolchain from the Vite team.

FunctionalityNubVite+
Script runner (npm run equivalent)
Bin runner (npx)
Node.js version manager (nvm)
TypeScript runner (tsx)
Package manager❌ — passthrough
Package manager shims (corepack)🟡 — npm only
Dev server❌ — bring your own✅ — Vite
Bundler❌ — bring your own✅ — Rolldown
Formatter❌ — bring your own✅ — Oxfmt
Linter❌ — bring your own✅ — Oxlint
Type checker❌ — bring your own✅ — tsgo (embedded)
Test runner❌ — bring your own✅ — Vitest

Running files

Both tools run a file, and both fetch the project's Node version on demand — the difference is what happens to the file in between.

nub app.ts        # augmented, on stock Node
vp node app.ts    # plain Node

Running a file with Nub augments it — the batteries-included feel of a runtime like Bun, still on the stock node binary:

  • TypeScript — the full syntax surface: enums, decorators, parameter properties, import =, and extensionless imports
  • JSX.jsx and .tsx run directly, with the runtime resolved from your tsconfig
  • Module resolutionpaths, baseUrl, and extends from tsconfig, applied at runtime
  • Env files.env and .env.[mode] loaded automatically
  • Data imports — YAML, TOML, JSON5, JSONC, and text files load like JSON
  • Polyfilled APIsWorker, web storage, Temporal, URLPattern, and other newer globals

Vite+ runs files through vp node, but that path is unaugmented: it defers to Node's own native type-stripping, with no tsconfig-aware resolution and none of those loaders or polyfills.

This is transpilation, not type-checking — Nub runs the TypeScript above but never type-checks it. For that, bring your own type checker.

Package management

Nub is a full package manager, powered by the embedded aube engine — it resolves the dependency graph, links node_modules, and round-trips whatever lockfile your project already uses. Vite+ is a passthrough to an existing package manager: in a pnpm project, vp install runs pnpm's install.

The frontend toolchain

Vite+ is far broader in scope. It bundles the whole frontend toolchain — the dev server, bundler, formatter, linter, type checker, and test runner named in the table above — as one tested stack. Nub is deliberately unopinionated there, leaving those choices to whatever tools and frameworks you pull in as devDependencies.