# Feature catalog — vitejs/vite

> Canonical page: https://codevetter.com/unpack/vite/feature-catalog

# Feature catalog — vitejs/vite

Scanned commit 1544bb1b7ac92f775e9d0dea97954c99cc6cbd43 (2026-09-22). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

Vite's user-facing surface is four CLI commands, a programmatic JS API, a Rollup-superset plugin hook system, and a browser-side HMR runtime with an error overlay. Around that sit optional subsystems: dependency pre-bundling, CSS preprocessing and modules, worker/WASM/asset handling, `import.meta.glob`, SSR module running, and the legacy-browser plugin. `create-vite` is an independent interactive scaffolder with eleven framework families. The most recently added features are the multi-environment builder (`--app` / `builder: {}`), console forwarding from browser to terminal, and `--experimentalBundle` bundled dev.
- `vite dev` accepts `--host`, `--port`, `--open [path]`, `--cors`, `--strictPort`, `--force` (bust the optimizer cache) and `--experimentalBundle`, then prints URLs and installs CLI shortcuts, adding a `p` shortcut to toggle the CPU profiler when launched under `--profile`. — [packages/vite/src/node/cli.ts#L200-306](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/cli.ts#L200-L306)
- `vite build` exposes `--target`, `--outDir`, `--assetsDir`, `--assetsInlineLimit`, `--ssr [entry]`, `--sourcemap [inline|hidden]`, `--minify [oxc|terser|esbuild]` (default `oxc`), `--manifest`, `--ssrManifest`, `--emptyOutDir`, `-w/--watch`, and `--app` which is sugar for `builder: {}`. — [packages/vite/src/node/cli.ts#L310-380](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/cli.ts#L310-L380)
- Interactive terminal shortcuts during dev are `r` restart server, `u` show server url, `o` open in browser, `c` clear console, `q` quit; preview mode registers only `o` and `q`. — [packages/vite/src/node/shortcuts.ts#L128-190](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/shortcuts.ts#L128-L190)
- The dev server exposes built-in HTTP endpoints beyond module serving: `/__open-in-editor` (via `launch-editor-middleware`), a `viteHMRPingMiddleware` answering `accept: text/x-vite-ping` with 204, and `/@fs/` raw filesystem serving guarded by the allow-list. — [packages/vite/src/node/server/index.ts#L1031-1058](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/server/index.ts#L1031-L1058) [packages/vite/src/node/constants.ts#L115](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/constants.ts#L115)
- A dev proxy is available via `server.proxy`, backed by `http-proxy-3`, supporting `rewrite`, `configure`, webpack-dev-server-style `bypass`, WebSocket proxying, and `rewriteWsOrigin` to rewrite the Origin header on WS upgrades. — [packages/vite/src/node/server/middlewares/proxy.ts#L13-60](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/server/middlewares/proxy.ts#L13-L60) [packages/vite/src/node/server/middlewares/proxy.ts#L107-180](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/server/middlewares/proxy.ts#L107-L180)
- The browser client ships an error overlay implemented as the custom element `vite-error-overlay` (`class ErrorOverlay extends HTMLElement`), gated by the injected `__HMR_ENABLE_OVERLAY__` define and creatable/clearable from `handleMessage`. — [packages/vite/src/client/overlay.ts#L216-305](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/client/overlay.ts#L216-L305) [packages/vite/src/client/client.ts#L343-360](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/client/client.ts#L343-L360)
- Dependency pre-bundling is a full subsystem: `scanImports` computes entries and runs a Rolldown scanner, `runOptimizeDeps` writes a `_metadata.json` cache under `getDepsCacheDir(environment)`, and `loadCachedDepOptimizationMetadata` / `cleanupDepsCacheStaleDirs` manage reuse and GC across runs. — [packages/vite/src/node/optimizer/index.ts#L284-520](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/optimizer/index.ts#L284-L520) [packages/vite/src/node/optimizer/scan.ts#L116-320](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/optimizer/scan.ts#L116-L320) [packages/vite/src/node/constants.ts#L222](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/constants.ts#L222)
- The built-in plugin pipeline provides asset handling, CSS (`cssPlugin`/`cssPostPlugin`/`cssAnalysisPlugin`), HTML (`htmlInlineProxyPlugin`/`buildHtmlPlugin`), web workers (`webWorkerPlugin`, `workerImportMetaUrlPlugin`), WASM (`wasmHelperPlugin`), `define`, `import.meta.glob` (`importGlobPlugin`), dynamic-import variables, and module-preload polyfill. — [packages/vite/src/node/plugins/index.ts#L42-150](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/plugins/index.ts#L42-L150)
- Browser console forwarding to the terminal is opt-in via `server.forwardConsole.enabled`, which conditionally inserts `forwardConsolePlugin({ environments: ['client'] })` into the pipeline and is picked up client-side through the `__SERVER_FORWARD_CONSOLE__` define. — [packages/vite/src/node/plugins/index.ts#L120-123](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/plugins/index.ts#L120-L123) [packages/vite/src/client/client.ts#L26-45](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/client/client.ts#L26-L45) [packages/vite/src/shared/forwardConsole.ts](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/shared/forwardConsole.ts)
- SSR is served by `fetchModule(environment, url, importer)`, which short-circuits `data:` URLs and Node builtins to `{externalize, type:'builtin'}`, external URLs to `type:'network'`, and otherwise resolves bare specifiers through `tryNodeResolve` with `externalConditions`. — [packages/vite/src/node/ssr/fetchModule.ts#L24-70](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/ssr/fetchModule.ts#L24-L70)
- `vite/module-runner` is a separately published runtime: `class ModuleRunner` with `evaluatedModules`, a pluggable `transport` that `invoke('fetchModule', ...)`s the server, optional HMR via `createHMRHandlerForRunner`, and `cachedRequest`/`directRequest` for circular-dependency-aware evaluation. — [packages/vite/src/module-runner/runner.ts#L38-340](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/module-runner/runner.ts#L38-L340) [packages/vite/package.json#L37](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/package.json#L37)
- `create-vite` v9.2.1 is an interactive prompt-driven scaffolder over a `FRAMEWORKS` table covering vanilla, vue, react, preact, lit, svelte, solid and qwik, each with TS/JS variants plus links to external starters (Nuxt, Vike, Official Vue Starter), materialised from the sibling `template-*` directories. — [packages/create-vite/src/index.ts#L80-160](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/create-vite/src/index.ts#L80-L160) [packages/create-vite/package.json](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/create-vite/package.json)
- `@vitejs/plugin-legacy` v8.2.3 returns a plugin array (`legacyConfigPlugin`, `legacyGenerateBundlePlugin`, `legacyPostPlugin`) that runs `detectPolyfills`, transforms modern chunks to SystemJS via `@babel/plugin-transform-modules-systemjs`, injects `systemjs/dist/s.min.js`, and emits a `systemjs-importmap` script tag. — [packages/plugin-legacy/src/index.ts#L274-460](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/plugin-legacy/src/index.ts#L274-L460) [packages/plugin-legacy/src/index.ts#L650-790](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/plugin-legacy/src/index.ts#L650-L790) [packages/plugin-legacy/src/index.ts#L911-1070](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/plugin-legacy/src/index.ts#L911-L1070)
- Experimental full-bundle dev mode (`--experimentalBundle` → `config.experimental.bundledDev`) replaces the transform/static middlewares with `triggerLazyBundlingMiddleware` + `memoryFilesMiddleware` and is driven by the `BundledDev` class holding a `MemoryFiles` map and a Rolldown dev engine started with `experimental.devMode = { lazy: true }`. — [packages/vite/src/node/server/index.ts#L1049-1060](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/server/index.ts#L1049-L1060) [packages/vite/src/node/server/bundledDev.ts#L28-130](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/server/bundledDev.ts#L28-L130) [packages/vite/src/node/server/bundledDev.ts#L396-410](https://github.com/vitejs/vite/blob/1544bb1b7ac92f775e9d0dea97954c99cc6cbd43/packages/vite/src/node/server/bundledDev.ts#L396-L410)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
