先说句实话:Electron 环境搭建,网上教程一抓一大把,但八成都是“装个 Node、npm install electron、跑个 demo”三步就完事。等你真把代码往下写,开始考虑业务打包、遇到网络问题、分发到国产系统、壳子里嵌 URL 的时候,那些教程一个都用不上,还得自己踩坑。
这篇文章我不想再重复一遍官方 Quick Start,而是把“从零开始搭一套真正能写业务的 Electron 开发环境”这件事拆开讲清楚。你在热搜里也看到了,“electron 想用 URL 打包进去是否可行”“electron 壳子内的页面打开 URL”“国产系统分发”“菜单”“获取系统语言”这些词,都是大家真实开发中高频遇到的问题,说明环境搭建从来不只是装个软件,而是一整套工程决策的起点。
这套环境搭好之后,不仅 Windows 上能跑,macOS 和 Linux 也能交叉出包;不仅本地能调试,后续接自动构建、加自动更新也有基础。如果你是第一次接触 Electron,或者已经在写但一直被各种玄学问题卡住,建议顺着往下过一遍。
1. 环境搭建背后到底在搭什么
1.1 Electron 的真实依赖结构
Electron 本质上是一个“用 Node.js 和 Chromium 帮你打包桌面应用”的运行时。你在 npm 里装的 electron 包,并不是一份源码,主要干两件事:
- 下载一个对应你当前操作系统和 CPU 架构的预编译二进制文件
- 提供一个让开发者通过 Node.js API 启动桌面应用壳子的入口
这个二进制文件里内置了两个核心运行时:Chromium,负责渲染你写的页面;Node.js,负责提供主进程里的系统能力。理解这一点之后,你才能明白为什么环境搭建的关键不只是“装上了”,而是“装对了版本、装到了能跑的位置、装的过程中没被网络坑、跑起来之后主进程和渲染进程能正常通信”。
很多新人最迷惑的一个点:Electron 项目里为什么有两个 package.json?其实这不是强制要求,但属于比较推荐的工程结构。根目录的 package.json 管理主进程代码和整个应用的依赖,electron-builder 或 electron-forge 这类工具会打包时读取配置;如果你把主进程和渲染进程拆成了 src/main、src/renderer 两个目录,再配一个 electron 项目模板管理构建脚本,很多老项目确实是这么组织的。
这个结构本身不是环境搭建的必备项,但你在搭环境时最好就规划好,因为后面引入打包工具时,目录混乱会让你怀疑人生。
1.2 为什么选 Electron 而不是别的方案
在正式开始装之前,把“为什么选 Electron”想清楚,可以帮你后面省掉很多不必要的工作。
现阶段桌面端跨平台方案主要就这么几条路:
- Qt / C++:性能好,但 UI 开发和前端技术栈割裂,招人成本和团队学习成本高
- Tauri:Rust + WebView,包体积小、内存占用低,但生态和周边能力不如 Electron 成熟,而且各系统的 WebView 兼容性偶尔需要额外适配
- Electron:包体积大、内存占用高,这是硬伤,但胜在生态最成熟,开发模式接近写网页,Chromium 的内核版本统一,几乎不用操心浏览器兼容问题
我的经验是:如果你的产品是一个内容密集、交互复杂、需要频繁发版迭代的桌面应用,Electron 的开发效率优势非常明显。尤其是团队里已经有前端工程师的情况下,Electron 能让你一天之内把网页业务跑成一个桌面壳子,这个代价在原型验证阶段实在太诱人了。
值得提一句的是,Electron 31 版本以后,渲染进程的高 DPI 缩放和 Windows 显示缩放比例之间的适配,跟 Chromium 版本的升级有直接关系。如果你要在应用里基于显示器缩放比例动态计算窗口尺寸,环境搭建阶段就该把 Electron 版本锁定策略想好,而不是随便用最新版。
1.3 环境搭建阶段的常见误区
很多人会把环境搭建简单等同于“跑通 hello world”,然后就去写业务代码,等到某个节点开始集中爆雷。比如下面这几种,几乎每个踩过 Electron 坑的人多多少少遇到过:
- 主进程和渲染进程混在一份代码里,没有隔离,后面想加 preload 脚本都无从下手
- 用
npm install electron时没有配镜像,下载成功靠缘分,版本和本地 Node 不匹配 - 所有逻辑全写在
index.html和main.js的全局作用域里,变量互相污染,调试起来极其痛苦 - 不区分生产环境和开发环境,直接在本地加载远程 URL 开发,发布时才发现有跨域、路径一系列问题
- 完全依赖默认的 Chromium 内核设置,字体、缩放、路由策略全按照浏览器习惯来
所以我建议环境搭建阶段就直接按照工程化标准来。虽然第一步看着慢一点,但后面每个环节都在往回找补时间。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手之前先梳理关键选型
2.1 Node.js 版本与 npm 镜像源
Electron 的二进制是“版本敏感”的。老的 Electron 版本,比如 12.x、13.x,对 Node 版本要求低一些;新版 Electron(比如 30+)则需要相对较新的 Node.js 才能正常跑构建脚本,一般建议 LTS 版本起步,目前安装 20 或 22 都比较稳妥。
如果你本机需要同时维护多个 Node 版本,建议直接用 nvm-windows 或者 macOS 上的 nvm。不要图省事直接去官网下安装包装全局 Node,因为换项目时版本切换会让你崩溃。装完 Node 后,务必确认 npm config get registry 返回的是国内可访问的镜像地址,否则后面 electron 二进制下载失败会非常折磨。
2.2 Electron 版本锁定策略
Electron 版本更新的节奏非常快,基本每两个月出一个大版本。但对业务开发来说,并不建议无脑追新,因为 Chromium 内核每次升级都会带来一些渲染表现变化,可能在你完全没碰到的代码里引发问题。
我个人的习惯是:
- 新项目直接使用当前最新稳定版,获取较完整的安全补丁
- 老项目锁住主版本,只在小版本内升级,除非有明确需求或安全漏洞
- 在
package.json里用"electron": "^30.x.x"而不是"electron": "30.0.0",避免锁死补丁升级 - 下载完成后,将 Electron 的二进制缓存路径固定下来,方便离线复用
2.3 官方脚手架选哪个,还是自己手搭
Electron 官方提供了两个体验完全不同的工具:electron-forge 和 electron-builder。
electron-forge 是 Electron 官方团队主推的一体化工具,从开发到打包发布一条龙,深度整合了 Vite/Webpack 等构建工具,用它生成的项目后期加插件比较顺滑。electron-builder 则是社区老牌工具,配置项细、定制能力强,支持多平台构建、自动更新配置。
如果你对前端工程化没那么熟,也懒得折腾配置文件,推荐直接用 electron-forge 的 Vite 模板:
bash复制npm init electron-app@latest my-app -- --template=vite
如果你需要把远程 URL 直接打包成桌面应用,而且希望控制更细粒度的打包逻辑,我一般建议自己维护一个最小工程模板。这样你对主进程的启动逻辑是可控的,不会被脚手架的抽象层限制住。
从环境搭建粒度上来讲,我下面会给大家一条“最简但可控”的路线,不依赖重型脚手架,手动了解每一层在做什么。
3. 从零开始搭建一套可用的 Electron 开发环境
3.1 基础依赖安装与镜像配置
以 Windows 10/11 为例,首先安装 Node.js LTS 版本。我习惯用 nvm 做版本管理,不做全局占用:
bash复制nvm install 20
nvm use 20
node -v
npm -v
接着配置 npm 镜像:
bash复制npm config set registry https://registry.npmmirror.com
这里有一点必须提醒:registry 镜像只解决 npm 包下载速度,但 Electron 的二进制是从 GitHub Releases 下载的,国内网络经常直接失败。所以还得单独设置 Electron 的二进制镜像:
bash复制npm config set electron_mirror https://
