• Vite+React+Electron开发入门,10分钟搭建本地环境并打包


    前言

    想使用vite和react开发跨平台桌面的软件方案有electron和tauri两种,但是我个人更喜欢tauri,无奈electron名声大燥,面试要求里很多都写着:electron...可见这类公司多么落后。但是呢,又秉持着存在即合理的理念,electron也有自己的优势,所以今天就来体验一下吧

    整体步骤分为四个

    安装环境,修改配置,本地启动调试,打包发布。让你十分钟之内熟悉整个流程。

    第一步,安装环境

    需要node环境,至少14以上,假装你已经有了。推荐使用nvm管理多版本node。

    然后安装vite环境:Vite | 下一代的前端工具链

    然后使用vite创建一个react或者vue程序: 

    yarn create vite

    按照提示选择react或者vue: 

    创建完成后,进入项目并安装依赖:

    然后安装electron依赖:

    yarn add concurrently electron cross-env -D

    安装electron打包依赖:并创建打包配置文件

    1. yarn add --dev @electron-forge/cli
    2. npx electron-forge import

    执行完npx electron-forge import后,你的项目根目录会出现一个forge.config.js文件:

    第二步,修改配置

    当依赖安装完成后,我们修改package.json文件,添加打包脚本:

    1. "scripts": {
    2. "start": "npm run build && npm run electron:start",
    3. "dev": "concurrently -k \"vite\" \"npm run electron:dev\"",
    4. "build": "vite build",
    5. "preview": "vite preview",
    6. "electron:start": "cross-env IS_DEV=false electron-forge start",
    7. "electron:dev": "cross-env IS_DEV=true electron-forge start",
    8. "package": "electron-forge package",
    9. "make": "electron-forge make"
    10. },

     还需要在package.json的script同级添加几个配置:

    1. "main": "app/index.js",
    2. "description": "electron-vite-react",
    3. "license": "MIT",
    4. "author": {"name": "1024小神", "email": "15670339118@163.com"},
    5. "scripts": {
    6. "start": "npm run build && npm run electron:start",
    7. "dev": "concurrently -k \"vite\" \"npm run electron:dev\"",
    8. "build": "vite build",
    9. "preview": "vite preview",
    10. "electron:start": "cross-env IS_DEV=false electron-forge start",
    11. "electron:dev": "cross-env IS_DEV=true electron-forge start",
    12. "package": "electron-forge package",
    13. "make": "electron-forge make"
    14. },

    并且删除一个配置:"type": "module",因为这个配置会导致你启动失败和打包失败等各种问题:Error [ERR_REQUIRE_ESM]: require() of ES Module

    然后创建electron的启动文件:创建一个app目录,添加index.js,内容如下:

    1. const path = require('path')
    2. const { app, BrowserWindow } = require('electron')
    3. if (require('electron-squirrel-startup')) {
    4. app.quit()
    5. }
    6. const isDev = process.env.IS_DEV === 'true'
    7. function createWindow() {
    8. const mainWindow = new BrowserWindow({
    9. width: 800,
    10. height: 600
    11. })
    12. if (isDev) {
    13. mainWindow.loadURL('http://localhost:5173')
    14. mainWindow.webContents.openDevTools()
    15. } else {
    16. mainWindow.loadFile(path.join(__dirname, '../dist', 'index.html'))
    17. }
    18. }
    19. app.whenReady().then(() => {
    20. createWindow()
    21. app.on('activate', function () {
    22. if (BrowserWindow.getAllWindows().length === 0) {
    23. createWindow()
    24. }
    25. })
    26. })
    27. app.on('window-all-closed', function () {
    28. if (process.platform !== 'darwin') {
    29. app.quit()
    30. }
    31. })

    第三步,本地启动

    不出意外的话,你执行 yarn run dev 就会成功执行了

    第四步,打包发布

    此时记得修改vite打包配置: base: "./" ,不然打包后的程序打开可能是白屏,因为他们加载不到js文件,需要设置一下路径就可以了

    1. import { defineConfig } from 'vite'
    2. import react from '@vitejs/plugin-react'
    3. // https://vitejs.dev/config/
    4. export default defineConfig({
    5. plugins: [react()],
    6. base: './'
    7. })

    然后先执行编译命令:yarn run build

    再执行:yarn run package

    打包后会有一个out文件夹: 双击即可打开,只是打出来的包太大了吧,158M,,,,,(tauri只有3M不到,这就是差距啊,发誓不用electron!)

    然后正常运行: 

    但是这158M的包大小,让人望而却步啊.............

    最后还是推荐tauri开发,仅3M大小啊,不香吗 

    分享一个我用Tauri开发的一个软件,类似百度云,但是不和谐任何文件:用Tauri+Vue3+TypeScript+Pinia写的基础类似百度云开发模板,支持国际化和主题切换,图片音视频播放等,可做图床视频床使用_tauri vue_1024小神的博客-CSDN博客

  • 相关阅读:
    竹云产品入选《2023年度上海市网络安全产业创新攻关成果目录》
    js实现一个可指定超时时间的异步函数重试机制
    图像滤波处理
    【云原生 | 从零开始学istio】六、istio核心功能
    库函数的模拟实现
    服务器硬件基础知识
    Java 可变参数及集合工具类(Collections)
    从理论走向实战!阿里高工熬夜整理出的 Spring 源码速成笔记太香了
    mysql 报错 is too long for user name (should be no longer than 16)
    C++之STL中vector模拟实现
  • 原文地址:https://blog.csdn.net/weixin_44786530/article/details/132841011