Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Vite 8 (Rolldown-powered) configuration, plugin API, SSR, library mode, and Environment API reference.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/build-and-ssr.md
1---2name: vite-build-ssr3description: Vite library mode, multi-page apps, JavaScript API, and SSR guidance4---56# Build and SSR78## Library Mode910Build a library for distribution:1112```ts13// vite.config.ts14import { resolve } from 'node:path'15import { defineConfig } from 'vite'1617export default defineConfig({18build: {19lib: {20entry: resolve(import.meta.dirname, 'lib/main.ts'),21name: 'MyLib',22fileName: 'my-lib',23},24rolldownOptions: {25external: ['vue', 'react'],26output: {27globals: {28vue: 'Vue',29react: 'React',30},31},32},33},34})35```3637### Multiple Entries3839```ts40build: {41lib: {42entry: {43'my-lib': resolve(import.meta.dirname, 'lib/main.ts'),44secondary: resolve(import.meta.dirname, 'lib/secondary.ts'),45},46name: 'MyLib',47},48}49```5051### Output Formats5253- Single entry: `es` and `umd`54- Multiple entries: `es` and `cjs`5556### Package.json Setup5758```json59{60"name": "my-lib",61"type": "module",62"files": ["dist"],63"main": "./dist/my-lib.umd.cjs",64"module": "./dist/my-lib.js",65"exports": {66".": {67"import": "./dist/my-lib.js",68"require": "./dist/my-lib.umd.cjs"69},70"./style.css": "./dist/my-lib.css"71}72}73```7475## Multi-Page App7677```ts78export default defineConfig({79build: {80rolldownOptions: {81input: {82main: resolve(import.meta.dirname, 'index.html'),83nested: resolve(import.meta.dirname, 'nested/index.html'),84},85},86},87})88```8990## SSR Development9192**Note:** Vite's SSR support is **low-level** and designed mostly for meta-framework authors, not application developers. If you need SSR for your app, use a Vite-based meta-framework instead:9394- **Nuxt** (Vue) - https://nuxt.com95- **SvelteKit** (Svelte) - https://svelte.dev/docs/kit96- **SolidStart** (Solid) - https://start.solidjs.com97- **TanStack Start** (React) - https://tanstack.com/start9899These frameworks build on top of Vite's SSR primitives so you don't have to wire them up yourself.100101**Need a server?** Consider [Nitro](https://nitro.build) -- think of it as "Vite for servers." Nitro provides a portable, framework-agnostic server layer with file-based API routing, auto-imports, and deployment presets for dozens of platforms (Node.js, Deno, Bun, Cloudflare Workers, Vercel, Netlify, etc.). It integrates naturally with Vite and is what powers Nuxt's server engine. See the [Nitro docs](https://nitro.build) for more details.102103## JavaScript API104105### createServer106107```ts108import { createServer } from 'vite'109110const server = await createServer({111configFile: false,112root: import.meta.dirname,113server: { port: 1337 },114})115116await server.listen()117server.printUrls()118```119120### build121122```ts123import { build } from 'vite'124125await build({126root: './project',127build: { outDir: 'dist' },128})129```130131### preview132133```ts134import { preview } from 'vite'135136const previewServer = await preview({137preview: { port: 8080, open: true },138})139previewServer.printUrls()140```141142### resolveConfig143144```ts145import { resolveConfig } from 'vite'146147const config = await resolveConfig({}, 'build')148```149150### loadEnv151152```ts153import { loadEnv } from 'vite'154155const env = loadEnv('development', process.cwd(), '')156// Loads all env vars (empty prefix = no filtering)157```158159<!--160Source references:161- https://vite.dev/guide/build162- https://vite.dev/guide/api-javascript163- https://nitro.build164-->165