内网环境搭建electron环境

597 阅读4分钟

内网环境如何搭建electron环境?

预期效果:

  1. 程序员的本地电脑要能像在有外网的环境一样能顺畅下载electron和electron-builder
  2. jenkins这类集成打包,部署的环境,也要能像有外网一样顺畅的构建,打包

需要实现如上两点需要做些什么?

  1. 内网环境搭建npm私服(用于普通的npm包下载)
  2. 内网搭建electron镜像(用于electron二进制文件下载)
  3. 内网搭建electron-builder镜像(用于electron-builder文件下载)
  4. 在需要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搭建静态文件下载服务器

基于nginx的文件上传下载服务器 | 朱磊的博客 (zhuleichina.github.io)

下载electron二进制文件压缩包

GitHub - electron/get: Download Electron release artifacts

electron镜像

通过镜像,进行 electron 安装

华为云electron镜像

https://mirrors.huaweicloud.com/electron/

阿里云electron镜像

https://npmmirror.com/mirrors/electron/

electron-builder镜像

华为云electron-builder镜像

https://mirrors.huaweicloud.com/electron-builder-binaries/

阿里云electron-builder镜像

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私服外,无法直接访问任何外网。

实现方案

特别注意项:

  1. 请确保下面的每一步node,npm操作,都是在管理员的终端下操作的,否则,可能会因为权限问题,导致各种奇怪问题
  2. 如果出现# EPERM: operation not permitted, unlink错误,那么请在项目根目录执行pnpm store path 命令,找到pnpm的store目录,并按照 juejin.cn/post/720625… 这篇文章的内容解决
  1. 查看最新的@electron/get依赖的node版本,将你本地node调整为对应node版本

npmmirror.com/package/@el…

  1. 在任意盘符创建local-mirror文件夹,并在该文件夹创建electron,electron-builder-binaries文件夹, 并在这两个文件夹下,创建对应的版本号文件夹(一般使用最新版本)

所需文件从阿里的镜像站点下载(请读者根据你当前的最新版本下载,后续执行安装命令的时候,可能不是下的最新版本,那么你就要根据你的版本号,再次下载对应文件):

npmmirror.com/mirrors/ele…

npmmirror.com/mirrors/ele…

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
  1. 全局安装http-server(用于搭建文件服务), 并在local-mirror目录启动

npmmirror.com/package/htt…

  1. 新建一个普通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

  1. 通过pnpm create @quick-start/electron创建electron项目,并安装cross-env

npmmirror.com/package/cro…

修改package.json中的startdev脚本,修改如下

"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/
  1. pnpm/yarn安装sqlite3(根据你的实际需要看是否需要安装sqlite3)

参考文章

www.imaegoo.com/2024/yarn-a…

electron + electron-builder + better-sqlite3 免编译安装

npm离线安装sqlite3

Electron开发安装better-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就可以非编译方式/离线方式安装成功了

  1. 此时你就可以运行pnpm run dev进行本地开发了
  2. 开发完毕,你就能通过pnpm run build:win在win系统下打包可执行文件了