The development server provides hot reloading for main process and preload scripts, plus Hot Module Replacement (HMR) for renderer processes, creating a fast development experience.
Main function to create and start the development server with Electron app integration.
/**
* Create development server and start Electron app
* @param inlineConfig - Optional inline configuration overrides
* @param options - Server creation options
* @returns Promise that resolves when server starts
*/
function createServer(
inlineConfig?: InlineConfig,
options?: { rendererOnly?: boolean }
): Promise<void>;
type InlineConfig = Omit<ViteConfig, 'base'> & {
/** Path to config file or false to disable */
configFile?: string | false;
/** Disable .env file loading */
envFile?: false;
/** Ignore configuration warnings */
ignoreConfigWarning?: boolean;
};Usage Examples:
import { createServer } from "electron-vite";
// Start full development server
await createServer();
// Start with custom config
await createServer({
mode: 'development',
logLevel: 'info',
build: {
watch: {} // Enable watch mode
}
});
// Renderer-only mode for UI development
await createServer({}, { rendererOnly: true });For renderer processes, full HMR support is provided:
// In renderer code - HMR API available
if (import.meta.hot) {
import.meta.hot.accept('./component.js', (newModule) => {
// Handle hot update
});
}Main process and preload scripts support hot reloading:
Configure the development server behavior:
// In electron.vite.config.js
export default defineConfig({
main: {
build: {
watch: {} // Enable watch mode for main process
}
},
renderer: {
server: {
port: 3000,
host: 'localhost',
open: false, // Don't open browser
cors: true,
hmr: {
port: 3001
}
}
}
});Development server sets these environment variables:
// Available in main process and preload scripts
process.env.ELECTRON_RENDERER_URL // Dev server URL for renderer
process.env.NODE_ENV_ELECTRON_VITE // Set to 'development'Enable Node.js inspector for main process debugging:
# Enable V8 inspector
electron-vite dev --inspect
# Enable inspector with break on start
electron-vite dev --inspectBrk
# Custom inspector port
electron-vite dev --inspect=9229Enable remote debugging for renderer processes:
# Enable remote debugging port
electron-vite dev --remoteDebuggingPort=9222Control renderer process sandboxing during development:
# Disable sandbox for debugging
electron-vite dev --noSandboxThe development server watches these file patterns:
electron.vite.config.* filespackage.json for dependency changesConfigure file watching behavior:
{
main: {
build: {
watch: {
exclude: ['node_modules/**', 'dist/**'],
include: ['src/main/**/*.ts']
}
}
}
}Errors are displayed both in: