Vite bundler for Nuxt applications providing seamless integration between Nuxt's framework and Vite's build system
npx @tessl/cli install tessl/npm-nuxt--vite-builder@4.1.0The Nuxt Vite Builder is the official bundling solution for Nuxt applications, providing seamless integration between Nuxt's full-stack framework and Vite's fast development server and optimized production builds. It handles both client-side and server-side rendering, CSS processing, asset management, and complex plugin orchestration for modern Vue.js applications.
import { bundle, type ViteBuildContext } from "@nuxt/vite-builder";For CommonJS environments:
const { bundle } = require("@nuxt/vite-builder");import type { Nuxt } from "@nuxt/schema";
import { bundle } from "@nuxt/vite-builder";
// Bundle a Nuxt application
await bundle(nuxt);The Nuxt Vite Builder is organized around several key systems:
Core bundling functionality that orchestrates the entire build process for both client and server targets.
/**
* Main bundling function for Nuxt applications using Vite
* @param nuxt - Nuxt instance containing configuration and build context
*/
function bundle(nuxt: Nuxt): Promise<void>;
interface ViteBuildContext {
/** Nuxt application instance */
nuxt: Nuxt;
/** Vite configuration object */
config: ViteConfig;
/** Application entry point file path */
entry: string;
/** Optional Vite development server for client builds */
clientServer?: ViteDevServer;
/** Optional Vite development server for SSR builds */
ssrServer?: ViteDevServer;
}Client-side build pipeline handling browser-optimized bundles, CSS processing, and development server setup.
/**
* Build client-side assets with Vite
* @param nuxt - Nuxt instance
* @param ctx - Vite build context
*/
function buildClient(nuxt: Nuxt, ctx: ViteBuildContext): Promise<void>;Server-side build pipeline for SSR support, optimized for Node.js runtime with external dependency handling.
/**
* Build server-side assets for SSR
* @param nuxt - Nuxt instance
* @param ctx - Vite build context
*/
function buildServer(nuxt: Nuxt, ctx: ViteBuildContext): Promise<void>;PostCSS integration and CSS handling for both development and production builds.
/**
* Resolve CSS processing options including PostCSS plugins
* @param nuxt - Nuxt instance with PostCSS configuration
* @returns Vite CSS configuration object
*/
function resolveCSSOptions(nuxt: Nuxt): Promise<ViteConfig['css']>;Comprehensive Vite plugin system providing specialized functionality for Nuxt applications.
/**
* SSR styles plugin for CSS extraction and inlining
* @param options - Plugin configuration options
* @returns Vite plugin instance
*/
function SSRStylesPlugin(options: SSRStylesPluginOptions): Plugin;
/**
* Public directories plugin for asset resolution
* @param options - Plugin configuration options
* @returns Array of Vite plugin instances
*/
function PublicDirsPlugin(options: VitePublicDirsPluginOptions): Plugin[];Development server integration with hot module replacement, file watching, and CORS handling.
/**
* Vite-node plugin for SSR development
* @param nuxt - Nuxt instance
* @returns Vite plugin instance
*/
function ViteNodePlugin(nuxt: Nuxt): Plugin;
/**
* Write development server configuration
* @param nuxt - Nuxt instance
*/
function writeDevServer(nuxt: Nuxt): Promise<void>;Client and server manifest generation for optimal asset loading and bundle resolution.
/**
* Write client and server manifests for bundle resolution
* @param ctx - Vite build context
*/
function writeManifest(ctx: ViteBuildContext): Promise<void>;interface ViteBuildContext {
/** Nuxt application instance */
nuxt: Nuxt;
/** Vite configuration object */
config: ViteConfig;
/** Application entry point file path */
entry: string;
/** Optional Vite development server for client builds */
clientServer?: ViteDevServer;
/** Optional Vite development server for SSR builds */
ssrServer?: ViteDevServer;
}
interface SSRStylesPluginOptions {
/** Source directory path */
srcDir: string;
/** Set of chunk IDs with inlined CSS */
chunksWithInlinedCSS: Set<string>;
/** Function or boolean determining if styles should be inlined */
shouldInline?: ((id?: string) => boolean) | boolean;
/** Array of Nuxt component definitions */
components: Component[];
/** Mapping of CSS files to chunks */
clientCSSMap: Record<string, Set<string>>;
/** Application entry point */
entry: string;
/** Global CSS file paths */
globalCSS: string[];
/** Build mode: server or client */
mode: 'server' | 'client';
}
interface VitePublicDirsPluginOptions {
/** Development mode flag */
dev?: boolean;
/** Base URL for public assets */
baseURL?: string;
}