ViteDevServer

The ViteDevServer serves files as ES modules with on-the-fly esbuild transpilation, CSS injection, and HMR updates. It extends the DevServer base class.

Constructor

import { ViteDevServer } from "@run0/jiki";

const server = new ViteDevServer(vfs, options);

Options

OptionTypeDefaultDescription
portnumber(required)Port number
rootstring"/"Root directory
entrystring"/index.html"Entry HTML file
frameworkstring"react"react, vue, svelte, solid, vanilla
jsxImportSourcestring"react"JSX import source

Request handling

The server handles these URL patterns:

URL PatternBehaviour
/ or *.htmlServes HTML with HMR client injected
*.js, *.ts, *.tsx, *.jsxTransforms via esbuild and serves as ESM
*.cssServes as JS module that injects <style>
/@modules/<pkg>Resolves bare import from node_modules
/@vite/clientServes the HMR client script
Other filesServed as static with correct MIME type

HMR events

server.on("hmr-update", update => {
  // update.type: "update" | "full-reload"
  // update.path: string
  // update.timestamp: number
});
  • JS/TS/CSS changes emit type: "update"
  • HTML changes emit type: "full-reload"

Also see