React18构建Vite+Electron项目以及打包

一.先创建项目

javascript 复制代码
cnpm create vite

选择React => JavaScript =>cd react_vite => cnpm i =>npm run dev

二.安装Electron依赖

指定版本相对稳定

javascript 复制代码
cnpm i electron@19.0.10 -D
cnpm i vite-plugin-electron@0.9.3 -D
cnpm i electron-builder@23.0.1 -D

三.创建electron目录

创建electron/index.js electron文件夹与src同级

index.js:

javascript 复制代码
import { app, BrowserWindow, } from 'electron'
import path from "path"
let mainWin
const createWindow = () => {
    mainWin = new BrowserWindow({
        width: 800,
        height: 500,
        webPreferences: {
            nodeIntegration: true,
            contextIsolation: false
        }
    })
    if (process.env.NODE_ENV !== 'development') {
        mainWin.loadFile(path.join(__dirname, "../index.html"))
    } else {
        // VITE_DEV_SERVER_HOST 如果是undefined 换成  VITE_DEV_SERVER_HOSTNAME
        mainWin.loadURL(`http://${process.env['VITE_DEV_SERVER_HOSTNAME']}:${process.env['VITE_DEV_SERVER_PORT']}`)
    }
}

app.whenReady().then(createWindow)

四.配置vite.config.js与package.json

vite.config.js:

javascript 复制代码
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import electron from 'vite-plugin-electron'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react(), electron({
    main: {
      // 置顶 electron 入口文件
      entry: "electron/index.js"
    }
  })],
})

package.json:

把 "type":"module" 删除掉,添加 "main": "dist/electron/index.js", 指定入口文件


运行项目:npm run dev


打包:修改package.json配置

"build": "vite build && electron-builder",

添加build配置

javascript 复制代码
{
  "name": "react_vite",
  "private": true,
  "version": "0.0.0",
  "main": "dist/electron/index.js",
  "scripts": {
    "dev": "vite",
    "build": "vite build && electron-builder",
    "preview": "vite preview"
  },
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  },
  "devDependencies": {
    "@types/react": "^18.0.28",
    "@types/react-dom": "^18.0.11",
    "@vitejs/plugin-react": "^3.1.0",
    "electron": "^19.0.10",
    "electron-builder": "^23.0.1",
    "vite": "^4.2.0",
    "vite-plugin-electron": "^0.9.3"
  },
  "build": {
    "appId": "com.electron.desktop",
    "productName": "electron",
    "asar": false,
    "copyright": "Copyright © 2022 electron",
    "directories": {
      "output": "release/"
    },
    "files": [
      "dist"
    ],
    "mac": {
      "artifactName": "${productName}_${version}.${ext}",
      "target": [
        "dmg"
      ]
    },
    "win": {
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64"
          ]
        }
      ],
      "artifactName": "${productName}_${version}.${ext}"
    },
    "nsis": {
      "oneClick": false,
      "perMachine": false,
      "allowToChangeInstallationDirectory": true,
      "deleteAppDataOnUninstall": false
    },
    "publish": [
      {
        "provider": "generic",
        "url": "http://127.0.0.1:8080"
      }
    ],
    "releaseInfo": {
      "releaseNotes": "版本更新的具体内容"
    }
  }
}

npm run build

相关推荐
亚里士多没有德7751 分钟前
强制删除了windows自带的edge浏览器,重装不了怎么办【已解决】
前端·edge
micro2010145 分钟前
Microsoft Edge 离线安装包制作或获取方法和下载地址分享
前端·edge
.生产的驴9 分钟前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
awonw12 分钟前
[前端][easyui]easyui select 默认值
前端·javascript·easyui
老齐谈电商14 分钟前
Electron桌面应用打包现有的vue项目
javascript·vue.js·electron
九圣残炎33 分钟前
【Vue】vue-admin-template项目搭建
前端·vue.js·arcgis
柏箱1 小时前
使用JavaScript写一个网页端的四则运算器
前端·javascript·css
TU^1 小时前
C语言习题~day16
c语言·前端·算法
一颗花生米。4 小时前
深入理解JavaScript 的原型继承
java·开发语言·javascript·原型模式