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/rolldown-migration.md
1---2name: vite-rolldown3description: Vite 8 Rolldown bundler and Oxc transformer migration4---56# Rolldown Migration (Vite 8)78Vite 8 replaces esbuild+Rollup with Rolldown, a unified Rust-based bundler.910## What Changed1112| Before (Vite 7) | After (Vite 8) |13|-----------------|----------------|14| esbuild (dev transform) | Oxc Transformer |15| esbuild (dep pre-bundling) | Rolldown |16| Rollup (production build) | Rolldown |17| `rollupOptions` | `rolldownOptions` |18| `esbuild` option | `oxc` option |1920## Performance Impact2122- 10-30x faster than Rollup for production builds23- Matches esbuild's dev performance24- Unified behavior between dev and build2526## Config Migration2728### rollupOptions → rolldownOptions2930```ts31// Before (Vite 7)32export default defineConfig({33build: {34rollupOptions: {35external: ['vue'],36output: { globals: { vue: 'Vue' } },37},38},39})4041// After (Vite 8)42export default defineConfig({43build: {44rolldownOptions: {45external: ['vue'],46output: { globals: { vue: 'Vue' } },47},48},49})50```5152### esbuild → oxc5354```ts55// Before (Vite 7)56export default defineConfig({57esbuild: {58jsxFactory: 'h',59jsxFragment: 'Fragment',60},61})6263// After (Vite 8)64export default defineConfig({65oxc: {66jsx: {67runtime: 'classic',68pragma: 'h',69pragmaFrag: 'Fragment',70},71},72})73```7475### JSX Configuration7677```ts78export default defineConfig({79oxc: {80jsx: {81runtime: 'automatic', // or 'classic'82importSource: 'react', // for automatic runtime83},84jsxInject: `import React from 'react'`, // auto-inject85},86})87```8889### Custom Transform Targets9091```ts92export default defineConfig({93oxc: {94include: ['**/*.ts', '**/*.tsx'],95exclude: ['node_modules/**'],96},97})98```99100## Plugin Compatibility101102Most Vite plugins work unchanged. Rolldown supports Rollup's plugin API.103104If a plugin only works during build:105106```ts107{108...rollupPlugin(),109enforce: 'post',110apply: 'build',111}112```113114## New Capabilities115116Rolldown unlocks features not possible before:117118- Full bundle mode (experimental)119- Module-level persistent cache120- More flexible chunk splitting121- Module Federation support122123## Gradual Migration124125For large projects, migrate via `rolldown-vite` first:126127```bash128# Step 1: Test with rolldown-vite129pnpm add -D rolldown-vite130131# Replace vite import in config132import { defineConfig } from 'rolldown-vite'133134# Step 2: Once stable, upgrade to Vite 8135pnpm add -D vite@8136```137138## Overriding Vite in Frameworks139140When framework depends on older Vite:141142```json143{144"pnpm": {145"overrides": {146"vite": "8.0.0"147}148}149}150```151152<!--153Source references:154- https://vite.dev/blog/announcing-vite8-beta155- https://vite.dev/blog/announcing-vite7156- https://vite.dev/config/shared-options#oxc157-->158