自己做个流程日志,
一个非常典型需求:用 Node.js 20 LTS + Vue 3 + Electron 创建一个桌面应用,启动后显示一个 "Hello World" 页面,并能打包成可执行程序。
当然,我需要它全屏显示。
下面是一个 完整、清晰、可直接照做的流程👇
🧰 一、安装环境
1️⃣ 安装 Node.js 20 LTS
从官网下载安装: 🔗 https://nodejs.org/en/download
安装后验证:
node -v
npm -v
输出类似:
v20.x.x
10.x.x
2️⃣ (推荐)设置国内 npm 镜像:
npm config set registry https://registry.npmmirror.com
🧱 二、创建 Vue 3 + Vite 项目
Vue CLI 已经过时,现在 Vue 官方推荐使用 create-vue:
npm create vue@latest
会输出提示,选择项目名,以及其他各种选项,这里啥也不用选
选择示例:**
✔ Project name: … hello-electron
✔ Add TypeScript? … No
✔ Add JSX Support? … No
✔ Add Vue Router for Single Page Application development? … No
✔ Add Pinia for state management? … No
✔ Add Vitest for Unit Testing? … No
✔ Add an End-to-End Testing Solution? … No
✔ Add ESLint for code quality? … No
然后:
cd hello-electron
npm install
npm run dev
浏览器打开 http://localhost:5173,能看到 Vue 3 的默认页面 ✅
⚡️ 三、集成 Electron
安装 Electron + 打包工具:
npm install electron electron-builder --save-dev
1️⃣ 创建 Electron 启动文件
在项目的目录下新建:
electron/main.js
内容如下:
// main.js
const { app, BrowserWindow } = require('electron');
const path = require('path');
function createWindow() {
const win = new BrowserWindow({
width: 800,
height: 600,
fullscreen: true, // ✅ 直接全屏
frame: false, // ✅ 不显示窗口边框和菜单栏
autoHideMenuBar: true, // ✅ 隐藏默认菜单栏(防止按 Alt 显示)
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});
win.loadFile(path.join(__dirname, '../dist/index.html'));
//win.webContents.openDevTools(); // 打开调试窗口
}
app.whenReady().then(createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') app.quit()
})
2️⃣ 创建 electron/preload.js
window.addEventListener('DOMContentLoaded', () => {
console.log('Preload script loaded.')
})
3️⃣ 修改 package.json
在最外层(项目根目录)中找到 scripts 部分,
"scripts": {
"dev": "vite",
"build": "run-p type-check \"build-only {@}\" --",
"preview": "vite preview",
"build-only": "vite build",
"type-check": "vue-tsc --build",
"format": "prettier --write src/"
}
修改为:
{
"main": "electron/main.js",
"name": "eclectron_hello",
"version": "0.0.0",
"private": true,
"type": "commonjs",
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"electron": "cross-env NODE_ENV=development vite & electron ./electron/main.js",
"electron:build": "vite build && electron-builder",
"build:electron": "npm run build && electron-builder"
},
"dependencies": {
"vue": "^3.5.22",
"vue-router": "^4.6.3"
},
"devDependencies": {
"@tsconfig/node22": "^22.0.2",
"@types/node": "^22.18.11",
"@vitejs/plugin-vue": "^6.0.1",
"@vue/tsconfig": "^0.8.1",
"cross-env": "^10.1.0",
"electron": "^38.4.0",
"electron-builder": "^26.0.12",
"npm-run-all2": "^8.0.4",
"prettier": "3.6.2",
"typescript": "~5.9.0",
"vite": "^7.1.11",
"vite-plugin-vue-devtools": "^8.0.3",
"vue-tsc": "^3.1.1"
},
"build": {
"appId": "com.example.hello",
"productName": "HelloElectron",
"directories": {
"output": "release"
},
"files": [
"dist/**/*",
"electron/**/*",
"package.json"
],
"extraResources": [],
"win": {
"target": ["nsis"],
"forceCodeSigning": false
}
}
}
修改vite.config.ts,添加属性,保证相对目录的识别:
base: './' ,
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
// https://vite.dev/config/
export default defineConfig({
plugins: [
vue(),
vueDevTools(),
],
base: './' ,
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
},
},
})
安装 cross-env(用于设置环境变量):
npm install cross-env --save-dev
🧪 四、开发模式运行
运行:
npm run build
# 编译生成vue发布的项目
#开发阶段
npm run electron
# 编译后 以管理员身份运行
npm run build:electron
⚡️ 会自动启动 Vite 开发服务器和 Electron 你会看到一个桌面窗口,显示 "Hello Vue 3" 页面 ✅
备注:
1)在打包过程中,需要使用管理员权限,也就是启动VSCODE时候,右键使用管理员运行;
2)其中,签名文件winCodeSign-2.6.0.7z 可能会下载失败,造成很多问题,自己下载并解压到对应的缓存目录。
📦 五、打包发布
其中,打包需要修改 package.json,在根元素下添加:
"build": {
"appId": "com.example.hello",
"productName": "HelloElectron",
"directories": {
"output": "release"
},
"files": [
"dist/**/*",
"electron/**/*"
],
"win": {
"target": ["nsis"],
"icon": "public/favicon.ico"
}
}
然后执行:
npm run electron:build
等待几分钟后,在 release/ 目录下会生成:
HelloElectron Setup.exe
双击即可安装运行桌面应用 ✅
🖥️ 六、最终目录结构示例
hello-electron/
├─ dist/ # Vue 构建输出
├─ electron/
│ ├─ main.js # Electron 主进程
│ └─ preload.js
├─ public/
├─ src/
│ ├─ App.vue
│ └─ main.js
├─ package.json
└─ vite.config.js
💡 七、可选优化选项
| 目标 | 建议 |
|---|---|
| 自动重启 Electron | 安装 electron-reload |
| Vue 与 Electron 通信 | 使用 contextBridge + IPC |
| 生成 Mac/Linux 版本 | electron-builder 自动支持 |
| 图标更换 | 替换 public/favicon.ico 并更新 build.win.icon |
✅ 总结:完整命令流程
# 1. 安装 Node.js 20 LTS
# 2. 创建 Vue3 项目
npm create vue@latest
cd hello-electron
npm install
# 3. 安装 Electron + 构建工具
npm install electron electron-builder cross-env --save-dev
# 4. 新建 electron/main.js + preload.js
# 5. 修改 package.json 和vite.config.ts
# 6. 开发运行
npm run electron
# 7. 打包发布
npm run electron:buildz
