记录基于electron13 + vue3 +vite2 的搭建
由于vite的运行、打包、热更新,与webpack数倍差距,
所以打算使用vite进行一个环境的搭建
1、vue3的搭建
npm init @vitejs/app project-name cd project-name npm install npm run dev
浏览器里可以看到页面。vite+vue就搭建好了
2、electron安装
安装electron 这里使用镜像 根目录添加一个 .npmrc文件 加上electron_mirror=http://cdn.npm.taobao.org/dist/electron/ npm install electron --save-dev npm install electron-builder --save-dev electron 打包
3、package.json
"name": "electron",
"version": "0.0.1",
"main": "main.js",
"license": "MIT",
"scripts": {
"dev": "vite",
"build": "vite build",
"serve": "vite preview",
"start": "electron ."
"dist": "electron-builder"
}
4、vite.config.ts 配置
import { defineConfig } from 'vite'
import {join ,resolve} from 'path'
import vue from '@vitejs/plugin-vue'
import dotenv from 'dotenv';
const root = join(__dirname, 'src/render')
export default defineConfig({
root,
base:'./',
plugins: [
vue(),
],
server:{
port:3000,
proxy:{}
}
outDir: join(__dirname, 'dist/render'),//指定输出路径(相对于项目根目录)
assetsDir: 'assets', // 指定生成静态资源的存放路径(相对于build.outDir)
emptyOutDir: true,
minify: false,
commonjsOptions: {},
sourcemap: true,
})
简单的vite配置,更多配置可查看官方文档
5、electron 主文件main.js
'use strict';
var path = require('path');
/**
* electron 主文件
*/
const { app, BrowserWindow ,session } = require('electron');
let win;
function createWin() {
// 创建浏览器窗口
win = new BrowserWindow({
width:1920,
height:1080,
useContentSize:true,
webPreferences: {
nodeIntegrationInWorker :true,
nodeIntegration: true,
contextIsolation: false,
},
});
const URL = app.isPackaged
? path.join(__dirname, '../render/index.html') // vite 构建后的静态文件地址
: `http://localhost:${process.env.PORT}`; // vite 启动的服务器地址
app.isPackaged ? win?.loadFile(URL) : win?.loadURL(URL);
}
app.whenReady().then(() => {
app.on('activate', ()=>{
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) createWin();
});
});
// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', ()=>{
if (process.platform !== 'darwin') app.quit();
});
/
*此处为安装vue-devtools 扩展,vue3的vue-devtools需要使用vue-devtools beta版本
官方文档 http://www.electronjs.org/docs/tutorial/devtools-extension
安装之后若提示警告,可更改vue-devtools项目中的manifest.json,删除掉与报错内容有关的内容即可
*/
app.on('ready',async ()=>{
if(!app.isPackaged){
//install vue devtool
try {
const devpath = 'D:/vue-devtools/vue3-devtools';
await session.defaultSession.loadExtension(devpath);
} catch (e) {
console.error('Vue Devtools failed to install:', e);
}
}
createWin();
});
另起终端,运行electron , 一个简单的electron环境就搭建好了
PS:Electron 作为前端标配的桌面开发工具,@vue-cli可以使用electron-vue,但是使用的是vue2
但是 Vite 这块并没提供,毕竟vite定位是和 webpack 那样的通用构建工具,连vue都没集成
这里分项一个大佬写的vite插件
electron-vue-vite
