内网环境如何搭建electron环境?
预期效果:
- 程序员的本地电脑要能像在有外网的环境一样能顺畅下载electron和electron-builder
- jenkins这类集成打包,部署的环境,也要能像有外网一样顺畅的构建,打包
需要实现如上两点需要做些什么?
- 内网环境搭建npm私服(用于普通的npm包下载)
- 内网搭建electron镜像(用于electron二进制文件下载)
- 内网搭建electron-builder镜像(用于electron-builder文件下载)
- 在需要electron和electron-builder项目的
.npmrc文件配置内网的镜像地址
npm私服用Verdaccio或nenus都可以,Verdaccio只能做npm私服,nenus既能做npm私服,也能做maven等私服
electron和electron-builder镜像使用nginx搭建(就是使用nginx搭建静态文件下载服务器, 把网上下到的electron和electron-builder放到nginux的映射的目录下,内网用户通过内网的nginx文件下载服务器下载electron和electron-builder)
nginx搭建静态文件下载服务器
基于nginx的文件上传下载服务器 | 朱磊的博客 (zhuleichina.github.io)
下载electron二进制文件压缩包
GitHub - electron/get: Download Electron release artifacts
electron镜像
https://mirrors.huaweicloud.com/electron/
https://npmmirror.com/mirrors/electron/
electron-builder镜像
https://mirrors.huaweicloud.com/electron-builder-binaries/
https://npmmirror.com/mirrors/electron-builder-binaries/
npm项目配置electron和electron-builder镜像地址
.npmrc 文件
electron_mirror=https://npmmirror.com/mirrors/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
electron-builder 项目 binDownload.ts 源码
npm项目从哪些地方读取环境变量
全局 .npmrc 文件 > 项目下 .npmrc 文件 > 环境变量
以下是:2025/07/11补充
纯内网怎么搭建?
以上提到,至少要能访问镜像网站。但纯内网呢?除了能访问公司的npm私服外,无法直接访问任何外网。
实现方案
特别注意项:
- 请确保下面的每一步node,npm操作,都是在管理员的终端下操作的,否则,可能会因为权限问题,导致各种奇怪问题
- 如果出现
# EPERM: operation not permitted, unlink错误,那么请在项目根目录执行pnpm store path命令,找到pnpm的store目录,并按照 juejin.cn/post/720625… 这篇文章的内容解决
- 查看最新的
@electron/get依赖的node版本,将你本地node调整为对应node版本
- 在任意盘符创建
local-mirror文件夹,并在该文件夹创建electron,electron-builder-binaries文件夹, 并在这两个文件夹下,创建对应的版本号文件夹(一般使用最新版本)
所需文件从阿里的镜像站点下载(请读者根据你当前的最新版本下载,后续执行安装命令的时候,可能不是下的最新版本,那么你就要根据你的版本号,再次下载对应文件):
registry.npmmirror.com/binary.html…
registry.npmmirror.com/binary.html…
local-mirror
|-- electron/35.7.0/electron-v35.7.0-win32-x64-symbols.zip
|-- electron/35.7.0/electron-v35.7.0-win32-x64-toolchain-profile.zip
|-- electron/35.7.0/electron-v35.7.0-win32-x64.zip
|-- electron/35.7.0/electron-v35.7.0.zip
|-- electron/35.7.0/SHASUMS256.txt
|-- electron/v35.7.0/electron-v35.7.0-win32-x64-symbols.zip
|-- electron/v35.7.0/electron-v35.7.0-win32-x64-toolchain-profile.zip
|-- electron/v35.7.0/electron-v35.7.0-win32-x64.zip
|-- electron/v35.7.0/electron-v35.7.0.zip
|-- electron/v35.7.0/SHASUMS256.txt
|-- electron-builder-binaries/nsis-3.0.5.0/nsis-3.0.5.0.7z
|-- electron-builder-binaries/nsis-3.0.5.0/nsis-3.0.5.0.tar.gz
|-- electron-builder-binaries/nsis-3.0.5.0/nsis-3.0.5.0.zip
|-- electron-builder-binaries/nsis-resources-3.4.1/nsis-resources-3.4.1.7z
|-- electron-builder-binaries/nsis-resources-3.4.1/nsis-resources-3.4.1.tar.gz
|-- electron-builder-binaries/nsis-resources-3.4.1/nsis-resources-3.4.1.zip
|-- electron-builder-binaries/winCodeSign-2.6.0/winCodeSign-2.6.0.7z
|-- electron-builder-binaries/winCodeSign-2.6.0/winCodeSign-2.6.0.tar.gz
|-- electron-builder-binaries/winCodeSign-2.6.0/winCodeSign-2.6.0.zip
- 全局安装
http-server(用于搭建文件服务), 并在local-mirror目录启动
- 新建一个普通node项目,并安装最新版
@electron/get,用于下载electron
// download-electron.js
import { download } from '@electron/get';
const zipFilePath = await download('35.7.0');
在执行download-electron.js之前,先在该项目下创建.npmrc文件设置electron,electron-builder的镜像为你本地站点
.npmrc
electron_mirror=http://localhost:80880/electron/
electron_builder_binaries_mirror=http://localhost:80880/electron-builder-binaries/
执行download-electron.js文件,electron下载成功之后,会存放在node_modules/electron/dist/electron.exe下
- 通过
pnpm create @quick-start/electron创建electron项目,并安装cross-env
修改package.json中的start和dev脚本,修改如下
"start": "cross-env ELECTRON_EXEC_PATH=下载好electron项目/node_modules/electron/dist/electron.exe electron-vite preview"
"dev": "cross-env ELECTRON_EXEC_PATH=下载好electron项目/node_modules/electron/dist/electron.exe electron-vite dev"
创建.npmrc文件
electron_mirror=http://localhost:80880/electron/
electron_builder_binaries_mirror=http://localhost:80880/electron-builder-binaries/
修改electron-builder.yml, 将electronDownload.mirror修改为你本地的镜像
electronDownload:
mirror: http://localhost:80880/electron/
- pnpm/yarn安装sqlite3(根据你的实际需要看是否需要安装sqlite3)
参考文章
用pnpm新建一个空项目
在pacakge.json添加
{
"pnpm":{
"onlyBuiltDependencies":['sqlite3']
}
}
新建.npmrc内容如下
# node_sqlite3_binary_host_mirror=http://npm.taobao.org/mirrors/
node_sqlite3_binary_host_mirror=你本地的镜像地址
引入sqlite3
pnpm add sqlite3 --loglevel verbose
观察日志输出,会有类似这么一条日志:
prebuild-install info looking for cached prebuild @ C:\Users\....\npm-cache\_prebuilds\xxxx-sqlite3-v5.1.7-napi-v6-win32-x64.tar.gz
找到这个缓存目录C:\Users\....\npm-cache\_prebuilds\, 从镜像站点下载sqlite3-v5.1.7-napi-v6-win32-x64.tar.gz文件,并改为xxxx-sqlite3-v5.1.7-napi-v6-win32-x64.tar.gz文件名,并放入这个缓存目录,再重新执行pnpm add sqlite3 --loglevel verbose, 此时sqlite3就可以非编译方式/离线方式安装成功了
- 此时你就可以运行
pnpm run dev进行本地开发了 - 开发完毕,你就能通过
pnpm run build:win在win系统下打包可执行文件了