我的编程空间,编程开发者的网络收藏夹
学习永远不晚

electron-vite新一代electron开发构建工具

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

electron-vite新一代electron开发构建工具

前言

得益于 Vite 卓越的前端开发体验,越来越多的 Electron 项目也开始应用它来构建开发。翻阅各种社区资源可以发现很多基于 Vite 搭建的 Electron 开发模板,但都存在着一些共同的问题:

  • 配置相对复杂,繁琐(对 main,preload 和 renderer 分别配置)
  • 需要辅助脚本来配合编译开发
  • 无法举一反三,自主选择前端框架(vue,react,svelte,……)

面对这些问题,我们需要对 Electron 有了解。Electron 是一个基于 Chromium 和 Node.js 的桌面应用框架,这意味着编译构建工具需要同时处理 node.js 和浏览器两种环境的代码。这是造成 Electron 开发构建工作复杂性的主因。

知识点

  • 主进程和预加载脚本,需基于 cjs 模块化标准构建,运行在 node 环境
  • 渲染进程,通常融合现代前端框架如 vue.js,react 等基于 iife 模块化标准构建,运行在浏览器
  • 在 Electron 中开启 node 集成,可全程基于 cjs 模块化标准编写代码,尽管不需要编译构建,但不利于利用现代前端框架,还会面临严重的性能和安全问题
  • 基于 esm 标准不编译构建,尽管 node 本身已支持,但 Electron 并不支持,这也是 Electron 后续版本的一项工作

electron-vite 是什么

electron-vite 是一个与 Vite 集成的 Electron 构建工具。开发者无需过多关注配置,无论选择哪种前端框架都能轻松完成构建,提高 Electron 的开发构建效率。

特性

  • ⚡️使用方式与 Vite 相同
  • ?主进程/渲染进程/preload脚本都使用 Vite 构建
  • ?统一所有配置,合并到一个文件中
  • ?预设构建配置,无需关注配置
  • ?支持渲染进程热更新(HMR)

安装

npm i electron-vite -D

开发&编译

在安装了 electron-vite 的项目中,可以直接使用 npx electron-vite 运行, 也可以在 package.json 文件中添加 npm scripts:

{
  "scripts": {
    "start": "electron-vite preview", // start electron app to preview production build
    "dev": "electron-vite dev", // start dev server and electron app
    "prebuild": "electron-vite build" // build for production
  }
}

为了使用热更新(HMR),需要使用环境变量(ELECTRON_RENDERER_URL)来决定 Electron 窗口加载本地页面还是远程页面。

function createWindow() {
  // Create the browser window
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, '../preload/index.js')
    }
  })

  // Load the remote URL for development or the local html file for production
  if (!app.isPackaged && process.env['ELECTRON_RENDERER_URL']) {
    mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
  } else {
    mainWindow.loadFile(path.join(__dirname, '../renderer/index.html'))
  }
}

注意: 在开发中, 渲染进程 index.html 文件需要通过 <script type="module"> 引用脚本。

推荐项目目录

├──class="lazy" data-src
|  ├──main
|  |  ├──index.js
|  |  └──...
|  ├──preload
|  |  ├──index.js
|  |  └──...
|  └──renderer
|     ├──class="lazy" data-src
|     ├──index.html
|     └──...
├──electron.vite.config.js
└──package.json

开始学习

  • 克隆 electron-vite-boilerplate (https://github.com/alex8088/electron-vite-boilerplate) 项目学习
  • 通过 create-electron 脚手架来搭建项目学习
npm init @quick-start/electron

配置

配置文件

当以命令行方式运行 electron-vite 时, 将会自动尝试解析项目根目录中名为 electron.vite.config.js 的配置文件。最基本的配置文件如下所示:

// electron.vite.config.js
export default {
  main: {
    // vite config options
  },
  preload: {
    // vite config options
  },
  renderer: {
    // vite config options
  }
}

你可以显式地通过 --config 命令行选项指定一个配置文件(相对于 cwd 路径进行解析):

electron-vite --config my-config.js

提示: electron-vite 也支持 ts 或者 mjs 的配置文件.

配置智能提示

因为 electron-vite 本身附带 Typescript 类型,所以你可以通过 IDE 和 jsdoc 的配合来实现智能提示:


const config = {
  // ...
}

export default config

你还可以使用 defineConfig and defineViteConfig 工具函数,这样不用 jsdoc 注解也可以获取类型提示:

import { defineConfig, defineViteConfig } from 'electron-vite'

export default defineConfig({
  main: {
    // ...
  },
  preload: {
    // ...
  },
  renderer: defineViteConfig(({ command, mode }) => {
    // conditional config use defineViteConfig
    // ...
  })
})

提示: defineViteConfigVite 中导出.

预设配置

基于主进程的编译项预设:

  • outDir: out\main(相对于根目录)
  • target: node*, 自动匹配 Electronnode 构建目标, 如 Electron 17 为 node16.13
  • lib.entry: class="lazy" data-src\main{index|main}.{js|ts|mjs|cjs}(相对于根目录), 找不到则为空
  • lib.formats: cjs
  • rollupOptions.external: electron和所有内置node模块(如果用户配置了外部模块ID,将自动合并)

基于preload脚本的编译项预设:

  • outDir: out\preload(相对于根目录)
  • target: 同主进程
  • lib.entry: class="lazy" data-src\preload{index|preload}.{js|ts|mjs|cjs}(相对于根目录), 找不到则为空
  • lib.formats: cjs
  • rollupOptions.external: 同主进程

基于渲染进程的编译项预设:

  • root: class="lazy" data-src\renderer(相对于根目录)
  • outDir: out\renderer(相对于根目录)
  • target: chrome*, 自动匹配 Electronchrome 构建目标. 如 Electron 17 为 chrome98
  • lib.entry: class="lazy" data-src\renderer\index.html(相对于根目录), 找不到则为空
  • polyfillModulePreload: false, 不需要为渲染进程 polyfill Module Preload
  • rollupOptions.external: 同主进程

提示:如果你想在已有的项目中使用这些预设配置,可以使用 Vite 的插件 vite-plugin-electron-config (github.com/alex8088/vi…)

配置问题

如果 Electron 具有多窗口应该如何配置?

当 Electron 应用程序具有多窗口时,就意味着可能有多个 html 页面和 preload 脚本,你可以像下面一样修改你的配置文件:

export default {
  main: {},
  preload: {
    build: {
      rollupOptions: {
        input: {
          browser: resolve(__dirname, 'class="lazy" data-src/preload/browser.ts'),
          webview: resolve(__dirname, 'class="lazy" data-src/preload/webview.ts')
        }
      }
    }
  },
  renderer: {
    build: {
      rollupOptions: {
        input: {
          browser: resolve(__dirname, 'class="lazy" data-src/renderer/browser.html'),
          webview: resolve(__dirname, 'class="lazy" data-src/renderer/webview.html')
        }
      }
    }
  }
}

结语

项目现在已经开源,欢迎各位感兴趣的小伙伴参与贡献提交 PR 或反馈 issue,给予 star 支持。

https://github.com/alex8088/electron-vite

到此这篇关于electron-vite新一代electron开发构建工具的文章就介绍到这了,更多相关electron-vite构建工具内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

electron-vite新一代electron开发构建工具

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

electron开发构建工具怎么用

今天小编给大家分享一下electron开发构建工具怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言得益于 Vite
2023-06-29

超全面的前端新一代构建工具对比: esbuild、Snowpack、Vite、wmr

每个工具都有不同的目标和功能。尽管存在差异,但这些工具有一个共同的目标:改善开发者体验。

基于Vite构建工具,用Strve.js开发一个简版TodoList(真香!)

我们今天就做一个简版的TodoList,项目虽小,但是五脏俱全。包含了对文本的增删改,非常值得上手。

新一代前端构建工具汇总

社区里也有许多其他优秀的构建工具,他们或许不如 Webpack 那样“包治百病”,但他们都有一些独特的优势,如果在一些特定的场景你觉得使用 Webpack 太臃肿了,那你或许可以考虑下面的一些工具。

Vue 新一代开发者工具正式开源!

第一种运行 Vue DevTools 的方法就是 Vite 插件。如果项目使用 Vite,强烈建议将其作为运行 DevTools 的首选项,因为它提供了更强大的功能。

低代码开发平台一个新时代的开发工具

低代码开发平台是一种新兴的开发工具,它可以大大减少开发人员的工作量,让他们可以更快地创建应用程序和网站。本文将详细介绍低代码开发平台SAAS,包括其特点、优势、使用场景和未来发展。一、什么是低代码开发平台SAAS?低代码开发平台是一种新兴的开发工具,它提供了一种简单的、直观的方式来创建应用程序和网站,无需编写大量
低代码开发平台一个新时代的开发工具
2023-12-17

重磅!微软发布新一代 Teams 开发工具 —— Teams Toolkit!

在一年一度的 Build 大会上,微软正式发布了新一代的 Teams 开发工具 —— Teams Toolkit。

如何使用低代码开发工具构建高效的移动应用

随着移动应用市场的不断扩大,企业对移动应用的需求也越来越高。然而,开发一款高质量的移动应用需要大量的时间和资源,对于许多企业来说,这是一个巨大的挑战。这时候,低代码开发工具就应运而生了。低代码开发工具可以帮助企业以更低的成本、更快的速度开发出高质量的移动应用,从而提高企业的竞争力。本篇文章将详细介绍如何使用低代码
如何使用低代码开发工具构建高效的移动应用
2023-12-17

IBM发布更新工具套件 将下一代AI开发转移到大型机

IBM表示,IBM Z的更新旨在通过跨多个行业和用例实施业务型AI来帮助客户改善业务成果,其中包括了一组新的开发人员工具包,支持最广泛使用的AI框架和Python编程语言、Machine Learning for z/OS的增强功能、以及I
IBMAI框架2024-11-30

编程热搜

目录