当前位置:   article > 正文

electron+umiJS4-react - 搭建桌面应用 - 使用umjs4搭建electron_umi 加 electron 如何结合

umi 加 electron 如何结合

1、打开命令行工具,切换路劲到工作空间下,执行一下脚本,创建项目

 npx create-umi@latest

 命令执行后,进入到你创建成功后目录中

2、安装必要(常用)的依赖

npm install electron electron-builder concurrently cross-env vite wait-on -D

npm安装electron 总是不成功.会卡在reify:lodash: timingreifyNode:node_modules/@types/node Completed in 578ms这里。

解决办法

先运行

npm install -g cnpm --registry=https://registry.npmmirror.com

再运行

cnpm install electron electron-builder concurrently cross-env vite wait-on -D

这时就能安装成功了

3、项目根目录下创建electron文件夹,electron文件夹下创建main.js 

  1. const { app, BrowserWindow } = require('electron');
  2. const path = require('path');
  3. // 需要安装件 cross-env
  4. const NODE_ENV = process.env.NODE_ENV;
  5. function createWindow() {
  6. const win = new BrowserWindow({
  7. width: 1200,
  8. height: 700,
  9. webPreferences: {
  10. nodeIntegration: true,
  11. contextIsolation: false, // 设置为false,才能在渲染进程中使用electron api
  12. },
  13. });
  14. win.loadURL(NODE_ENV === 'development' ? `http://localhost:8000` : `file://${path.join(__dirname, '../dist/index.html')}`);
  15. if (NODE_ENV === 'development') {
  16. win.webContents.openDevTools();
  17. }
  18. }
  19. app.whenReady().then(() => {
  20. createWindow();
  21. });
  22. app.on('window-all-closed', () => {
  23. if (process.platform !== 'darwin') {
  24. app.quit();
  25. }
  26. });

 4、packge.json中添加启动electron的启动脚本和electron程序入口

  1. {
  2. "name": "umi-electron",
  3. "version": "0.0.0",
  4. "private": true,
  5. "author": "",
  6. "main": "electron/main.js",
  7. "scripts": {
  8. "dev": "umi dev",
  9. "build": "umi build",
  10. "postinstall": "umi setup",
  11. "setup": "umi setup",
  12. "start": "npm run dev",
  13. "electron": "wait-on tcp:8000 && cross-env NODE_ENV=development electron .",//新增
  14. "electron:server": "cross-env ELECTRON_BUILD=false concurrently -k \"npm start\" \"npm run electron\"",//新增
  15. "electron:build": "cross-env ELECTRON_BUILD=true npm run build && electron-builder"//新增
  16. },
  17. "build": {
  18. "productName": "umi-electron",
  19. "copyright": "Copyright C 2021 yxln",
  20. "nsis": {
  21. "oneClick": false,
  22. "allowToChangeInstallationDirectory": true
  23. },
  24. "files": [
  25. "dist/**/*",
  26. "electron/**/*"
  27. ],
  28. "directories": {
  29. "buildResources": "assets",
  30. "output": "dist_electron"
  31. }
  32. },
  33. "dependencies": {
  34. "umi": "^4.0.75"
  35. },
  36. "devDependencies": {
  37. "@types/react": "^18.0.33",
  38. "@types/react-dom": "^18.0.11",
  39. "concurrently": "^8.2.0",
  40. "cross-env": "^7.0.3",
  41. "electron": "^25.5.0",
  42. "electron-builder": "^24.6.3",
  43. "typescript": "^5.0.3",
  44. "vite": "^4.4.9",
  45. "wait-on": "^7.0.1"
  46. }
  47. }

5、.umirc.ts中添加环境变量修改程序加载主页的路径

  1. import { defineConfig } from "umi";
  2. export default defineConfig({
  3. routes: [
  4. { path: "/", component: "index" },
  5. { path: "/docs", component: "docs" },
  6. ],
  7. history: { type: 'hash' },//新增
  8. publicPath: process.env.ELECTRON_BUILD == 'true' ? './' : '/',//新增
  9. npmClient: 'npm',
  10. });

 6、配置完成

开发调试执行 

npm run electron:server

打包执行 

 npm run electron:build

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号