如何快速搭建一个vite+react+electron开发环境
一、创建项目
先用vite创建一个项目,然后在选择react
模版
# npm
npm create vite@latest electron-demo
# yarn
yarn create vite@latest electron-demo
二、添加electron与环境依赖
如果安装electron过程遇到错误,可以查看官网的安装指引,大部分问题都能覆盖到。
# npm
npm install --save electron
# yarn
yarn add -D electron
安装concurently、cross-env、wait-on与electron-builder,concurrently用于在一条指令中,执行多条命令。cross-env用于区分不同的环境。wait-on用于在react应用启动后再启动electron窗口。electron-builder则是打包工具,
# npm
npm install --save concurrently cross-env wait-on
# yarn
yarn add -D concurrently cross-env wait-on
依赖安装完毕后,配置下package.json
,添加main
入口文件,以及在script
中添加相关命令。
{
"main": "./electron/main.js",
"scripts": {
"start": "vite",
"dev": "concurrently -k \"BROWSER=none npm start\" \"npm:electron:dev\"",
"electron:dev": "wait-on tcp:3000 && cross-env NODE_ENV=development electron ."
},
}
三、配置electron
根据package.json
中的配置,我们在根目录新建./electron/main.js
文件
// electorn/main.js
const { app, BrowserWindow } = require('electron')
const path = require('path')
const NODE_ENV = process.env.NODE_ENV
const createWindow = () => {
// 创建浏览窗口
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
},
})
if (NODE_ENV === 'development') {
mainWindow.loadURL('http://localhost:3000')
mainWindow.webContents.openDevTools()
} else if (NODE_ENV === 'production') {
mainWindow.loadFile(path.join(__dirname, 'build', 'index.html'))
}
}
app.whenReady().then(() => {
createWindow()
})
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
四、大功告成
此时运行命令即可在看到熟悉的react页面运行在electron窗口中,并且完美支持热更新!
# npm
npm run dev
# yarn
yarn run dev