electron-vite-vue/README.md
2022-01-06 10:17:00 +08:00

4.0 KiB

electron-vue-vite

awesome-vite GitHub license GitHub stars GitHub forks

English | 简体中文

🥳 Very simple Electron + Vue3 + Vite2 boilerplate.

Overview

This is an Electron class integration template that pursues simplification, maintaining 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 to be "streamlined". But trust me, this project is the simplest. 😋

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 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)
    

Mian window

Wechat