不用装全局!npx 启动 Electron + Vue 热加载(3 步搞定)

要将 npx electron . 与 Vue 热加载结合,需通过 vue-cli-plugin-electron-builder 或 Vite 配置实现开发环境的热更新,同时保留 npx 轻量化启动特性。以下是两种主流方案:

方案 1:基于 Vue CLI + npx 实现热加载

适合 Vue 2/3 项目,利用 Vue CLI 插件集成 Electron 并开启热更新:

步骤 1:创建 Vue 项目并集成 Electron

bash

# 1. 创建 Vue 项目(已有的话可跳过)
npx @vue/cli create vue-electron-demo
cd vue-electron-demo

# 2. 安装 Electron 集成插件
npx vue add electron-builder
步骤 2:修改配置支持热加载

插件会自动配置热更新,核心逻辑在 vue.config.js 中(默认已开启):

javascript

运行

// vue.config.js
module.exports = {
  pluginOptions: {
    electronBuilder: {
      // 开发模式下默认开启热加载
      hotReload: true, 
      // 主进程文件变更时重启(可选)
      mainProcessWatch: ['src/background.js']
    }
  }
};
步骤 3:用 npx 启动(带热加载)

bash

# 启动开发服务器(自动开启热加载)
npx vue-cli-service electron:serve
  • 效果:修改 Vue 组件(src/components/)会实时更新界面,无需手动刷新;
  • 原理:插件通过 webpack-dev-server 实现 Vue 热模块替换(HMR),同时保持 Electron 窗口与开发服务器同步。

方案 2:基于 Vite + npx 实现热加载(推荐 Vue 3)

Vite 热更新速度更快,适合现代 Vue 3 项目:

步骤 1:创建 Vite + Vue 项目

bash

# 创建 Vite 项目
npx create-vite@latest vue-electron-vite --template vue
cd vue-electron-vite
npm install
步骤 2:安装 Electron 相关依赖

bash

npm install electron electron-builder vite-plugin-electron --save-dev
步骤 3:配置 Vite 热加载

创建 / 修改 vite.config.js

javascript

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import electron from 'vite-plugin-electron';

export default defineConfig({
  plugins: [
    vue(),
    electron({
      entry: 'electron/main.js', // 主进程入口
      // 开发模式配置(热加载核心)
      development: {
        hotReload: true, // 开启热加载
        // 主进程文件变更时自动重启
        watch: ['electron/main.js']
      }
    })
  ],
  server: {
    port: 3000, // 确保与Electron加载的端口一致
    strictPort: true
  }
});
步骤 4:创建 Electron 主进程文件

新建 electron/main.js

javascript

const { app, BrowserWindow } = require('electron');
const path = require('path');

let mainWindow;
app.whenReady().then(() => {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      contextIsolation: false,
      nodeIntegration: true
    }
  });

  // 开发环境加载 Vite 热更新服务器
  if (process.env.NODE_ENV === 'development') {
    mainWindow.loadURL('http://localhost:3000'); // 与Vite端口一致
    mainWindow.webContents.openDevTools();
  } else {
    // 生产环境加载打包后的文件
    mainWindow.loadFile(path.join(__dirname, '../dist/index.html'));
  }
});
步骤 5:用 npx 启动(带热加载)

在 package.json 中添加脚本:

json

{
  "scripts": {
    "dev": "npx vite dev" // 启动Vite开发服务器(自动触发Electron)
  }
}

运行命令:

bash

npm run dev
  • 效果:修改 Vue 组件(src/ 下)会立即热更新,主进程文件(electron/main.js)变更会自动重启 Electron。

核心原理:热加载如何工作?

  1. 渲染进程热更新:Vue 代码通过 Webpack/Vite 的开发服务器运行,修改后通过 HMR(热模块替换)更新界面,无需刷新窗口。

  2. 主进程热重启:工具监听主进程文件(如 main.js),变更时自动重启 Electron 进程,保持开发状态同步。

关键注意事项

  1. npx 缓存问题:首次运行可能因下载依赖较慢,可通过指定版本加速:

    bash

    npx vue-cli-service@latest electron:serve  # Vue CLI 方案
    npx vite@latest dev                       # Vite 方案
    
  2. 端口冲突:确保 Vue 开发服务器端口(默认 8080/Vite 3000)未被占用,否则热加载会失效。

  3. 生产环境区分:热加载仅在开发模式生效,打包生产版本需用:

    bash

    npx vue-cli-service electron:build  # Vue CLI
    npx vite build && npx electron-builder  # Vite
    

两种方案都能完美结合 npx 的轻量化启动与 Vue 的热加载特性,推荐优先选择 Vite 方案(热更新速度更快,适合 Vue 3)

ElectronVue框架中集成Arco Design组件库,通常需要通过构建一个基于Vue的前端项目,并将其嵌入到Electron应用中。以下是一个实现方案,涵盖从项目结构搭建、依赖安到组件集成的具体骤。 ### 项目结构 建议使用Vite作为构建工具来创建Vue3项目,因为它具备更快的冷启动速度和热更新能力。Electron部分则负责将Vue生成的dist目录打包为桌面应用程序。 ```bash my-electron-vue-app/ ├── electron/ # Electron 主进程文件 │ └── main.js ├── src/ # Vue3 源代码 │ ├── main.js # Vue 应用入口 │ ├── App.vue │ └── components/ ├── public/ │ └── index.html ├── vite.config.js # Vite 配置文件 ├── package.json └── README.md ``` ### 安依赖 首先确保你已经安了Node.js环境,然后执行以下命令: ```bash # 创建项目并进入目录 mkdir my-electron-vue-app && cd my-electron-vue-app # 初始化npm npm init -y # 安vite和vue相关依赖 npm install vite vue@next vue-router pinia # 安arco-design-vue npm install arco-design-vue # 安electron npm install electron --save-dev ``` ### 集成 Arco Design #### 在Vue项目中引入 Arco Design 你可以选择全局引入或按需引入 Arco Design 的组件。 ##### 全局引入 修改 `src/main.js` 文件如下: ```javascript import { createApp } from &#39;vue&#39; import App from &#39;./App.vue&#39; import ArcoVue from &#39;@arco-design/web-vue&#39;; import &#39;@arco-design/web-vue/dist/arco.css&#39;; const app = createApp(App); app.use(ArcoVue); app.mount(&#39;#app&#39;); ``` ##### 按需引入(推荐) 如果你只想引入特定组件以减小打包体积,可以使用 [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) 插件进行自动导入。 1. 安插件: ```bash npm install unplugin-vue-components -D ``` 2. 修改 `vite.config.js`: ```javascript import Components from &#39;unplugin-vue-components/vite&#39;; import { ArcoDesignVueResolver } from &#39;unplugin-vue-components/resolvers&#39;; export default defineConfig({ plugins: [ Components({ resolvers: [ArcoDesignVueResolver()], }), ] }); ``` 现在你可以在任意 `.vue` 文件中直接使用 Arco Design 组件而无需手动注册。 例如,在 `src/components/HelloWorld.vue` 中使用按钮组件: ```vue <template> <a-button type="primary">Primary Button</a-button> </template> <script setup> // 不需要额外导入 a-button,由插件自动处理 </script> ``` ### Electron 主进程配置 在 `electron/main.js` 中设置主窗口加载本地服务器或打包后的 dist 文件: ```javascript const { app, BrowserWindow } = require(&#39;electron&#39;); const path = require(&#39;path&#39;); function createWindow () { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: false, contextIsolation: true, preload: path.join(__dirname, &#39;preload.js&#39;) } }); // 开发模式下使用本地开发服务器 win.loadURL(&#39;http://localhost:3000&#39;); // 生产模式下加载打包后的dist文件 // win.loadFile(path.join(__dirname, &#39;../dist/index.html&#39;)); } app.whenReady().then(() => { createWindow(); app.on(&#39;activate&#39;, () => { if (BrowserWindow.getAllWindows().length === 0) createWindow(); }); }); app.on(&#39;window-all-closed&#39;, () => { if (process.platform !== &#39;darwin&#39;) app.quit(); }); ``` ### 启动与构建 #### 开发阶段 运行 Vue 开发服务器: ```bash npm run dev ``` 同时运行 Electron 应用: ```bash npx electron ./electron/main.js ``` #### 打包发布 使用 [vite-plugin-electron](https://github.com/electron-vite/vite-plugin-electron) 或 [electron-builder](https://github.com/electron-userland/electron-builder) 进行打包。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三希

如果这篇文章帮您解决了技术难题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值