Go to file
theridgerugby 67f59fab67 fix(types): declare raw imports for node consumers
Add a *?raw module declaration to electron-vite/node so raw file imports
in the main and preload processes are typed as string. Keep runtime
behavior unchanged.

Add an isolated consumer fixture to pnpm typecheck. Verify that raw
imports are strings and reject Buffer assignments so an accidental any
declaration cannot pass the regression check.

Fixes #893.
2026-10-21 23:56:12 -04:00
.github chore: add funding 2025-05-10 17:58:35 +08:00
.vscode chore: improve prettier config 2023-12-07 22:35:38 +08:00
bin refactor!: invoke the bytecode compiler only once to compile all code 2026-10-07 13:36:10 +08:00
scripts chore: allow breaking commit message 2025-06-27 23:07:33 +08:00
src perf(swcPlugin): skip redundant minification when using Oxc (#922) 2026-10-11 02:13:14 +08:00
tests/types fix(types): declare raw imports for node consumers 2026-10-21 23:56:12 -04:00
.editorconfig chore: init 2022-03-17 16:21:02 +08:00
.gitignore chore: move to eslint flat config 2025-01-22 00:47:48 +08:00
.prettierignore chore: init 2022-03-17 16:21:02 +08:00
.prettierrc.yaml chore: init 2022-03-17 16:21:02 +08:00
CHANGELOG.md release: v6.0.0 2026-10-15 00:01:19 +08:00
CODE_OF_CONDUCT.md chore: init 2022-03-17 16:21:02 +08:00
CONTRIBUTING.md chore: update contributing 2022-07-03 15:31:37 +08:00
eslint.config.js chore: replace tseslint.config with defineConfig 2025-10-17 21:29:48 +08:00
LICENSE chore: init 2022-03-17 16:21:02 +08:00
node.d.ts fix(types): declare raw imports for node consumers 2026-10-21 23:56:12 -04:00
package.json fix(types): declare raw imports for node consumers 2026-10-21 23:56:12 -04:00
pnpm-lock.yaml fix(deps)!: downgraded @babel/* to v7 due to Node requirements 2026-09-27 18:39:07 +08:00
README.md docs: update 2025-11-09 23:31:08 +08:00
rollup.config.ts fix(deps)!: update vite to v8 (#894) 2026-04-08 02:04:25 +08:00
tsconfig.json refactor!: bump required node version to 20.19+, 22.12+ 2025-06-27 23:10:23 +08:00

electron-vite

Next generation Electron build tooling based on Vite

license

Documentation | Getting Started | create-electron

中文文档



Features

  • ⚡️ Vite powered and use the same way.
  • 🛠 Pre-configure with sensible defaults optimized for Electron.
  • 💡 Optimize asset handling for Electron main process.
  • 🚀 Fast HMR & hot reloading.
  • 🔥 Isolated build for multi-entry application development.
  • ✨ Simplify multi-threading development.
  • 🔒 Compile code to v8 bytecode to protect source code.
  • 🔌 Easy to debug in IDEs such as VSCode or WebStorm.
  • 📦 Out-of-the-box support for TypeScript, Vue, React, Svelte, SolidJS and more.

Usage

Install

npm i electron-vite -D

Development & Build

In a project where electron-vite is installed, you can use electron-vite binary directly with npx electron-vite or add the npm scripts to your package.json file like this:

{
  "scripts": {
    "start": "electron-vite preview",
    "dev": "electron-vite dev",
    "prebuild": "electron-vite build"
  }
}

Configuration

When running electron-vite from the command line, electron-vite will automatically try to resolve a config file named electron.vite.config.js inside project root. The most basic config file looks like this:

// electron.vite.config.js
export default {
  main: {
    // vite config options
  },
  preload: {
    // vite config options
  },
  renderer: {
    // vite config options
  }
}

Getting Started

Clone the electron-vite-boilerplate or use the create-electron tool to scaffold your project.

npm create @quick-start/electron@latest

Currently supported template presets include:

JavaScript TypeScript
vanilla vanilla-ts
vue vue-ts
react react-ts
svelte svelte-ts
solid solid-ts

Contribution

See Contributing Guide.

License

MIT © alex.wei