:electron: Electron + Vite + React + Sass boilerplate.
Go to file
草鞋没号 bc79511ca1 remove configs 2022-01-29 22:14:33 +08:00
scripts refactory: better script 2022-01-29 22:14:18 +08:00
src add Renderer vite.config.ts 2022-01-29 22:12:54 +08:00
.gitignore chore: UPDATE 2021-11-08 19:59:33 +08:00
LICENSE Initial commit 2021-11-01 01:54:59 +00:00
README.md docs: update code case 2022-01-21 17:20:36 +08:00
README.zh-CN.md docs: 依赖, resolveElectron 说明 2022-01-21 17:22:02 +08:00
electron-builder.json electron-builder.appId 2022-01-22 21:39:16 +08:00
package-lock.json Bump deps 2022-01-29 22:03:32 +08:00
package.json Bump deps 2022-01-29 22:03:32 +08:00
paths.json feat: configuration alias 2021-12-14 14:19:59 +08:00
tsconfig.json chore: remove ts-node config 2021-11-24 15:49:10 +08:00
types.d.ts fix: remove duplicate define 2021-11-11 17:00:48 +08:00

README.md

vite-react-electron

GitHub stars GitHub issues GitHub license Required Node.JS >= v14.17.0

English | 简体中文

Overview

  • All config files Main-process, Renderer-process and Preload-script they are in configs/*.ts.

  • All files are built using Vite, is supper fast.

  • scripts/build.mjs just calls the Vite API and uses the configs/*.ts config file to build.

  • The difference between scripts/watch.mjs and build.mjs is that the watch option is configured for the Main-process and Preload-script. The Renderer-process uses require ('vite').createServer

  • Manage projects more through configuration other than scripts. -- 🥳 Simple and clearly

Run Setup

# clone the project
git clone git@github.com:caoxiemeihao/vite-react-electron.git

# enter the project directory
cd vite-react-electron

# install dependency
npm install

# develop
npm run dev

Directory

Once dev or build npm-script executed will be generate named dist folder. It has children dir of same as src folder, the purpose of this design can ensure the correct path calculation.

├
├── configs
├   ├── vite-main.config.ts          Main-process config file, for -> src/main
├   ├── vite-preload.config.ts       Preload-script config file, for -> src/preload
├   ├── vite-renderer.config.ts      Renderer-script config file, for -> src/renderer
├
├── dist                             After build, it's generated according to the "src" directory
├   ├── main
├   ├── preload
├   ├── renderer
├
├── scripts
├   ├── build.mjs                    Build script, for -> npm run build
├   ├── watch.mjs                    Develop script, for -> npm run dev
├
├── src
├   ├── main                         Main-process source code
├   ├── preload                      Preload-script source code
├   ├── renderer                     Renderer-process source code
├

Use Electron, NodeJs API

🚧 By default, Electron don't support the use of API related to Electron and NoeJs in the Renderer-process, but someone still need to use it. If so, you can see the 👉 npm-package vitejs-plugin-electron or another template electron-vite-boilerplate

All Electron, NodeJs API invoke passed Preload-script

  • src/preload/index.ts

    import fs from 'fs'
    import { contextBridge, ipcRenderer } from 'electron'
    
    // --------- Expose some API to Renderer-process. ---------
    contextBridge.exposeInMainWorld('fs', fs)
    contextBridge.exposeInMainWorld('ipcRenderer', ipcRenderer)
    
  • src/renderer/src/global.d.ts

    // Defined on the window
    interface Window {
      fs: typeof import('fs')
      ipcRenderer: import('electron').IpcRenderer
    }
    
  • src/renderer/src/main.ts

    // Use Electron, NodeJs API in Renderer-process
    console.log('fs', window.fs)
    console.log('ipcRenderer', window.ipcRenderer)
    

Shown

Wechat group