本文用于记录在 react-create-app 生成的 react 我的项目中配置 electron 的步骤。
残缺我的项目见 github
成果:
- 应用 react-create-app 生成 react 我的项目。
- 装置 electron:
npm install electron
如果装置过程中在 install.js 出错,可参考:解决装置 electron 卡在 node install.js 不动问题。 -
在 package.json 中的最外层退出:
"homepage": "./", "main": "main.js",
如图:
- 在 package.json 中的 scripts 内退出:
"electron": "electron ."
如图: - 应用
npm run build
命令打包,在根目录的 build 文件夹下生成 react 我的项目的 index.js 文件,用于 electron 的渲染过程拜访。 - 在我的项目的根目录下(即与 src 同级处)新建一个文件 main.js。文件的内容如下:
// 引入 electron 并创立一个 Browserwindow
const {app, BrowserWindow} = require('electron');
const path = require('path');
const url = require('url');
// 放弃 window 对象的全局援用, 防止 JavaScript 对象被垃圾回收时, 窗口被主动敞开.
let mainWindow
function createWindow () {
// 创立浏览器窗口, 宽高自定义
mainWindow = new BrowserWindow({width: 800, height: 600})
/*
* 加载利用 ----- electron-quick-start 中默认的加载入口
*/
mainWindow.loadURL(url.format({
// 应用 npm run build 生成的 index.html 的路径名
pathname: path.join(__dirname, './build/index.html'),
protocol: 'file:',
slashes: true
}))
// 关上开发者工具,默认不关上
// mainWindow.webContents.openDevTools()
// 敞开 window 时触发下列事件.
mainWindow.on('closed', function () {mainWindow = null})
}
// 当 Electron 实现初始化并筹备创立浏览器窗口时调用此办法
app.on('ready', createWindow)
// 所有窗口敞开时退出利用.
app.on('window-all-closed', function () {
// macOS 中除非用户按下 `Cmd + Q` 显式退出, 否则利用与菜单栏始终处于活动状态.
if (process.platform !== 'darwin') {app.quit()
}
})
app.on('activate', function () {
// macOS 中点击 Dock 图标时没有已关上的其余利用窗口时, 则通常在利用中重建一个窗口
if (mainWindow === null) {createWindow()
}
})