Electron vite monorepo
Electron Turborepo monorepo with pnpm, Vue, Vite boilerplate
> A production-ready Electron desktop application template built with Vue 3 + Vite + TypeScript, managed as a monorepo with pnpm workspaces and Turborepo. The project is written primarily in TypeScript, distributed under the MIT License license, first published in 2021. Key topics include: boilerplate, electron, esm, ipc, monorepo.
Electron Vite Monorepo
A production-ready Electron desktop application template built with Vue 3 + Vite + TypeScript, managed as a monorepo with pnpm workspaces and Turborepo.
Features
- Electron 40 — Desktop application framework
- Vue 3 — Progressive JavaScript framework with
<script setup>SFC - Vite 7 — Next-generation frontend build tooling
- TypeScript — Full type safety across all packages
- pnpm Workspaces — Efficient monorepo dependency management
- Turborepo — High-performance build orchestration with caching
- Auto Update — Built-in application updater support (full update + patch update + web update)
- IPC Type Safety — Typed inter-process communication between main, preload, and renderer
- Code Obfuscation — Custom Vite plugin for JavaScript obfuscation
Project Structure
electron-vite-monorepo/
├── apps/
│ ├── electron/ # Electron main process (electron-main)
│ ├── preload/ # Preload scripts (@repo/electron-preload)
│ ├── web/ # Renderer process - Vue 3 app (electron-web)
│ └── docs/ # Documentation site (VitePress)
├── packages/
│ ├── backend-api/ # Backend API client (@roxy/backend-api)
│ ├── shared-types/ # Shared TypeScript types (@repo/shared-types)
│ └── vite-plugin/ # Custom Vite plugins (@repo/vite-plugin)
├── scripts/
│ └── watch.ts # Dev orchestration script
├── turbo.json # Turborepo configuration
└── pnpm-workspace.yaml # pnpm workspace configuration
Dependency Graph
apps/electron (electron-main)
├── @repo/electron-preload
└── @repo/shared-types
apps/preload (@repo/electron-preload)
└── @repo/shared-types
apps/web (electron-web)
├── @repo/electron-preload
└── @repo/shared-types
packages/backend-api (@roxy/backend-api)
└── peer: axios
packages/shared-types (@repo/shared-types) # Leaf package, type definitions
packages/vite-plugin (@repo/vite-plugin) # Standalone, obfuscation + minification
Prerequisites
- Node.js >= 22.20.0
- pnpm >= 10.18.3
Tip: This project uses Volta to manage Node.js and pnpm versions. If you have Volta installed, the correct versions will be used automatically.
Getting Started
1. Clone the repository
bashgit clone https://github.com/buqiyuan/electron-vite-monorepo.git cd electron-vite-monorepo
2. Install dependencies
bashpnpm install
3. Start development
bashpnpm dev
This will:
- Start the Vite dev server for the renderer (web) process
- Build and watch the preload scripts
- Build and watch the main process, then launch Electron with
--inspectflag
For China Users / 中国用户
If you are in China, you can use the Taobao npm mirror for faster downloads. Uncomment the following lines in .npmrc:
iniregistry = https://registry.npmmirror.com
For Electron binary downloads, run:
bashpnpm config set electron_mirror "https://npmmirror.com/mirrors/electron/"
Or set environment variables:
bashELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/
Scripts
| Command | Description |
|---|---|
pnpm dev | Start all apps in development mode with HMR |
pnpm build | Build all packages and apps via Turborepo |
pnpm pack:dev | Build and package Electron app (development) |
pnpm pack:prod | Build and package Electron app (production) |
pnpm lint | Run ESLint across all packages |
pnpm lint:fix | Auto-fix ESLint issues |
pnpm clean:cache | Clear build caches |
pnpm clean:lib | Remove all node_modules directories |
pnpm reinstall | Clean lock file and reinstall all dependencies |
Tech Stack
| Category | Technology |
|---|---|
| Desktop Framework | Electron 40 |
| Frontend Framework | Vue 3 |
| Build Tool | Vite 7 |
| Language | TypeScript 5 |
| Monorepo | pnpm Workspaces + Turborepo |
| Linting | ESLint (with @antfu/eslint-config) |
| Packaging | electron-builder |
| Auto Update | electron-updater |
License
Author
Contributors
Showing top 1 contributor by commit count.
