Ant Design Pro+Electron+electron-builder实现React应用脱离浏览器,桌面安装运行
首先,Adp项目和Electron打包分开,就是不要把两者的依赖和配置文件放在一个项目里,这是保持项目的纯粹性,各自专注自己的事情。因此,我们就需要一个Adp项目,一个Electron打包脚手架。
我们就以最简单的方式做这件事情,先成功打包一个安装包出来,再逐渐丰富和细化。
步骤:
1、我们需要把项目变成Electron的专用形式,需要调用umi的API修改webpack配置,使打包的target为electron-renderer,这个很重要,Adp默认按照pro 默认会按照 web 应用来打包的,issues #3346 。
找到:

设置:

然后,请到

设置
publicPath: './',
这很重要,否则回报以下错:
Failed to load resource: net::ERR_FILE_NOT_FOUND
还要设置:
history: 'hash'
如下:

另外,还要改造request.js文件,因为我是用官方封装的request来发送请求的,我们不如写成配置吧:
config文件夹中新增如下:

写入:
export const isBuildForElectron = false
export const baseUrl = 'https://xxxxxxxxxxx.com'
第一个设置是否打包为electron应用,第二个设置接口域名
上面的plugin.config.js也要改
if (isBuildForElectron) {
config.target('electron-renderer');
}
改造util/request.js

let url = apiUrl
if (isBuildForElectron) {
url = `${baseUrl}${apiUrl}` // 兼容 electron
}
2、找一个Electron打包的脚手架,快速获取:https://github.com/electron/electron-quick-start,这是一个快速开始,我们把它当作脚手架用,一点问题也没有
找到main.js,删掉如下:
- mainWindow.loadFile('index.html')
增加如下:
+ mainWindow.loadURL(path.join('file://', __dirname, 'ant/index.html'))
修改BrowserWindow的配置
webPreferences: {
nodeIntegration: true,
webSecurity: false,
allowRunningInsecureContent: true
}
根目录增加ant文件夹,把adp build后的文件放入ant文件夹

修改package.json,在package.json中增加build和修改script
{
"name": "xxx",
"version": "1.0.0",
"description": "A minimal Electron application",
"main": "main.js",
"scripts": {
"start": "electron .",
+ "pack": "electron-builder --dir",
+ "dist": "electron-builder"
},
"repository": "https://github.com/electron/electron-quick-start",
"keywords": [
"Electron",
"quick",
"start",
"tutorial",
"demo"
],
"author": "GitHub",
"license": "CC0-1.0",
"devDependencies": {
"electron": "^5.0.0"
},
+ "build": {
+ "appId": "xxx",
+ "productName": "xxxx系统",
+ "mac": {
+ "category": "your.app.category.type"
+ }
+ }
+ }
执行
npm run dist
PS:
1、对接1和2,使用electron-builder进行打包,使用electron-builder可以使得Electron打包变得很简单,当然打包方案不止eb,还有electron-packager,但是前者打包出来的包更体积小
electron-builder的安装步骤和基本使用步骤,看----> npm-->electron-builder-->Quick Setup Guide
https://www.npmjs.com/package/electron-builder
2、解决Adp中的请求失败问题,或者说跨域问题:
https://segmentfault.com/a/1190000012030202
Electron脚手架的package.json
{
"name": "electron-quick-start",
"version": "1.0.0",
"description": "A minimal Electron application",
"main": "main.js",
"scripts": {
"start": "electron .",
"pack": "electron-builder --dir",
"dist": "electron-builder"
},
"repository": "https://github.com/electron/electron-quick-start",
"keywords": [
"Electron",
"quick",
"start",
"tutorial",
"demo"
],
"author": "GitHub",
"license": "CC0-1.0",
"devDependencies": {
"electron": "^5.0.0"
},
"build": {
"appId": "your.id",
"mac": {
"category": "your.app.category.type"
}
}
}
3.Electron脚手架打包过程:

打包或的文件在项目的dist里,我们可以看到一些安装包,这就是我们要的东西了,直接拿来安装即可,目前是默认安到 C:

4.就算不设置target为electron-renderer,用Electron的loadUrl这个API,一样能读取Adp的内容,因为Electron本质就是一个浏览器或者更准确说是一个可以运行JS、HTML、CSS的环境
5.Electron的依赖不太好安装,国内或者香港环境不建议使用yarn和npm,建议使用 cnpm
6.报以下错:
unable to find electron app
请看:https://stackoverflow.com/questions/37489543/electron-rebuild-unable-to-find-electron-app
7.builder和packer两者的对比: https://segmentfault.com/a/1190000013924153
我已上传打包工具 https://github.com/heytheww/electron-build
20190806更新:
1.electron-builder的target,设置为nisi时,可以默认带卸载程序,并且可以支持配置安装路径
2.使用pkg.json配置electron-builder很快会失效,我看了一下,官方推荐使用 js配置文件
20190823更新
补坑:
1.如果遇到执行 npm run dist时,一直在下载 electron-v5.0.10-win32-ia32 或者 electron-v5.0.10-win32-x64之类的,就去这里找包https://npm.taobao.org/mirrors/electron,手动下载,放到下图图示位置,有一点很草泥马的就是,淘宝镜像的命名是v5.0.1一定要改为v5.0.10,否则electron-builder就会认为没下载。。。转而去下载
官方解决指南:
https://electronjs.org/docs/tutorial/installation

2.一直在下载winCodeSign-2.5.0,其实这个是electron-builder的依赖包,也是手动去github下,然后放到图示位置,注意啊,这个要压缩包一个解压的也要一个,都要放出来

同样的问题还有

凡是下载这种的

一律去github找release,然后复制地址用迅雷加速下载


最后说一点,以上的踩坑,谷歌一下,每个人都有自己的办法,好像都能解决问题,也是服了!
Ant Design Pro+Electron+electron-builder实现React应用脱离浏览器,桌面安装运行的更多相关文章
- ant design pro (七)和服务端进行交互
一.概述 原文地址:https://pro.ant.design/docs/server-cn Ant Design Pro 是一套基于 React 技术栈的单页面应用,我们提供的是前端代码和本地模拟 ...
- Ant Design Pro中Transfer穿梭框的实际用法(与后端交互)
Ant Design Pro中Transfer穿梭框的实际用法(与后端交互) 该控件的属性以及属性的作用在ADP的官方文档中都有介绍,但没有讲如何与后端交互,本文旨在讲解该控件与后端的交互. Ant ...
- (二)React Ant Design Pro + .Net5 WebApi:前端环境搭建
首先,你需要先装一个Nodejs,这是基础哦.如果没有这方面知识的小伙伴可以在园子里搜索cnpm yarn等关键字,内容繁多,此不赘述,参考链接 一. 简介 1. Ant Design Pro v5 ...
- ant design pro (十二)advanced UI 测试
一.概述 原文地址:https://pro.ant.design/docs/ui-test-cn UI 测试是项目研发流程中的重要一环,有效的测试用例可以梳理业务需求,保证研发的质量和进度,让工程师可 ...
- 阿里开源项目之Ant Design Pro
本篇文章主要包含的内容有三个方面. 第一.Ant Design Pro简介; 第二.Ant Design Pro能做什么; 第三.初步使用; 我相信通过这三个方面的讲解能让你大概知道Ant Desig ...
- ant design pro (八)构建和发布
一.概述 原文地址:https://pro.ant.design/docs/deploy-cn 二.详细 2.1.构建 当项目开发完毕,只需要运行一行命令就可以打包你的应用: npm run buil ...
- ant design pro (六)样式
一.概述 参看地址:https://pro.ant.design/docs/style-cn 基础的 CSS 知识或查阅属性,可以参考 MDN文档. 二.详细介绍 2.1.less Ant Desig ...
- ant design pro(二)布局
一.概述 参看地址:https://pro.ant.design/docs/layout-cn 其实在上述地址ant-design上已经有详细介绍,本文知识简述概要. 页面整体布局是一个产品最外层的框 ...
- ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】
一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等, ...
随机推荐
- SQL Server使用sp_spaceused查看表记录存在不准确的情况
在之前写过一篇博客"关系数据库如何快速查询表的记录数",里面介绍了使用sp_spaceused查看表的记录数是否正确的问题,具体如下: 关于问题3:有多个索引的表,是否记录数会 ...
- NLP第八条
今日!我虽啥也没干,但我还是有着学习的心的~ 也许是“遵义会议”呢 那也说不定 留下这句话再说 哈哈哈哈哈哈 只能抄抄NLP第八条了 谁叫我选了个灰常有意义的通识课咧 八,每一 ...
- Cocos Creator 资源加载流程剖析【二】——Download部分
Download流程的处理由Downloader这个pipe负责(downloader.js),Downloader提供了各种资源的"下载"方式--即如何获取文件内容,有从网络获取 ...
- 借助Chrome和插件爬取数据
工具 Chrome浏览器 TamperMonkey ReRes Chrome浏览器 chrome浏览器是目前最受欢迎的浏览器,没有之一,它兼容大部分的w3c标准和ecma标准,对于前端工程师在开发过程 ...
- cassandra读源码---Streaming
前言 cassandra的很多过程需要网络传输模块,需要在各个节点直接发送文件.包括加入节点,删除节点引起的不同节点的负责ring环的key值发生了变化,导致sstable需要在各个节点中移动. 整体 ...
- mysql id从n 开始
mysql 全部删除数据后设置 id从1开始: truncate table table_name mysql 删除部分数据后设置 id从n开始 ALTER TABLE user auto_incr ...
- 【Android Studio安装部署系列】十一、Android studio获取数字签名信息
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 下面介绍下调试版本和发布版本获取数字签名的方法,通过以下方法可以获取到SHA1和MD5. 一般在使用分享功能,在第三方平台中创建应用 ...
- Redis学习笔记~分布锁的使用
回到目录 分布锁主要用在多进程共同访问同一个资源时候,用来保持同一时间段只能有一个进程执行,同时避免了并发冲突的出现,这在很多场景都会用到,像秒杀库存,抽奖库存,多操作者处理一家公司等. void T ...
- Spring Boot 2.x 系列教程:WebFlux 系列教程大纲(一)
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! WebFlux 系列教程大纲 一.背景 大家都知道,Sprin ...
- 使用 线性规划 解决 数字 排序问题, +Leapms模型
问题 将如下一组数字从大到小排序. {10, 20, -32, 177, 0, -11.5, 19, 7, 6.2, -6.28, -2.71, 44} 解决办法 建立数学模型,给出各个数字的次序值. ...