Go to file
2022-01-27 10:48:32 +08:00
configs configs/vite-renderer.config.ts -> src/renderer/vite.config.ts 2022-01-27 08:49:40 +08:00
scripts refactor: better build, watch script 2022-01-27 10:48:32 +08:00
src configs/vite-renderer.config.ts -> src/renderer/vite.config.ts 2022-01-27 08:49:40 +08:00
.gitignore chore: UPDATE 2021-05-30 07:50:29 +08:00
CHANGELOG.md chore(docs): add CHANGELG.md 2021-11-11 17:53:10 +08:00
electron-builder.json electron-builder.appId 2022-01-22 21:37:34 +08:00
LICENSE chore: license 2021-11-04 14:26:18 +08:00
package-lock.json Bump vite-plugin-resolve from 1.3.1 to 1.4.0 2022-01-24 09:56:55 +08:00
package.json Bump vite-plugin-resolve from 1.3.1 to 1.4.0 2022-01-24 09:56:55 +08:00
README.md docs: update 2022-01-27 08:26:53 +08:00
README.zh-CN.md docs: Electron, NodeJs API 双明 2022-01-21 17:00:42 +08:00
tsconfig.json tsconfig.json --skipLibCheck 2022-01-17 18:11:08 +08:00
types.d.ts refactor: use vite alternative rollup 2021-11-11 17:52:50 +08:00

electron-vue-vite

awesome-vite GitHub license GitHub stars GitHub forks

English | 简体中文

🥳 Very simple Electron + Vue3 + Vite2 boilerplate.

Overview

This is an Electron category integration template that pursues simplification.
This contains only the most basic files, the most basic dependencies, and the most basic functions. Instead of large and complex design.
The purpose of this is to ensure that the template is flexible enough.

For all that, I still hope that you have a basic understanding for Electron Vite. Because in addition to the simple structure of the project, the README also appears too simplify.

You can learn more details by looking at the source code. Trust me, this template is the simple enough. 😋

Run Setup

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

# enter the project directory
cd electron-vue-vite

# 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 NodeJs in the Renderer-process, but someone still need to use it. If so, you can see the 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)
    

Main window

Wechat