Electron build tooling based on Vite with pre-configured development environments, plugins, and hot reloading
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
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:
Install with Tessl CLI
npx tessl i tessl/npm-electron-vite