copy Electron 離線環(huán)境打包解決方案(electron-forge) 未嘗試
1.在線環(huán)境準(zhǔn)備
- 創(chuàng)建新項(xiàng)目:
-
# 創(chuàng)建并進(jìn)入項(xiàng)目目錄 mkdir my-electron-app && cd my-electron-app # 初始化項(xiàng)目 npm init -y # 安裝 electron npm install --save-dev electron # 安裝 electron-forge npm install --save-dev @electron-forge/cli @electron-forge/maker-squirrel @electron-forge/maker-zip @electron-forge/maker-deb @electron-forge/maker-rpm # 使用 electron-forge 轉(zhuǎn)換項(xiàng)目 npx electron-forge import
- 下載所需的離線資源包
-
# 在項(xiàng)目根目錄創(chuàng)建離線資源文件夾 mkdir electron-offline-packages cd electron-offline-packages # 下載需要的 npm 包 npm pack electron npm pack @electron-forge/cli npm pack @electron-forge/core npm pack @electron-forge/maker-squirrel npm pack @electron-forge/maker-zip npm pack @electron-forge/maker-deb npm pack @electron-forge/maker-rpm # 下載 Electron 二進(jìn)制文件 # 從 https://npmmirror.com/mirrors/electron/ 下載對(duì)應(yīng)版本 # 例如下載 v25.9.8 版本: wget https://npmmirror.com/mirrors/electron/25.9.8/electron-v25.9.8-win32-x64.zip wget https://npmmirror.com/mirrors/electron/25.9.8/electron-v25.9.8-win32-ia32.zip wget https://npmmirror.com/mirrors/electron/25.9.8/SHASUMS256.txt
- 創(chuàng)建完整的項(xiàng)目模板:項(xiàng)目結(jié)構(gòu):
-
my-electron-app/ ├── src/ │ ├── index.html │ ├── index.css │ ├── index.js │ └── preload.js ├── electron-offline-packages/ │ ├── electron-25.9.8.tgz │ ├── electron-forge-cli-6.4.2.tgz │ ├── electron-v25.9.8-win32-x64.zip │ └── ... ├── package.json ├── forge.config.js └── .npmrc
package.json:-
{ "name": "my-electron-app", "version": "1.0.0", "description": "My Electron App", "main": "src/index.js", "scripts": { "start": "electron-forge start", "package": "electron-forge package", "make": "electron-forge make" }, "author": "author", "license": "ISC", "dependencies": { "electron-squirrel-startup": "^1.0.0" }, "devDependencies": { "@electron-forge/cli": "^6.4.2", "@electron-forge/maker-deb": "^6.4.2", "@electron-forge/maker-rpm": "^6.4.2", "@electron-forge/maker-squirrel": "^6.4.2", "@electron-forge/maker-zip": "^6.4.2", "electron": "25.9.8" } }
forge.config.js:-
module.exports = { packagerConfig: { asar: true, download: { mirror: "https://npmmirror.com/mirrors/electron/", cache: "./electron-cache" } }, rebuildConfig: {}, makers: [ { name: '@electron-forge/maker-squirrel', config: { name: 'my_electron_app' } }, { name: '@electron-forge/maker-zip', platforms: ['darwin', 'win32'] } ] };
.npmrc:-
registry=https://registry.npmmirror.com/ electron_mirror=https://npmmirror.com/mirrors/electron/ electron-custom-dir=25.9.8
- 打包整個(gè)項(xiàng)目:
-
# 將項(xiàng)目打包為 zip zip -r electron-project-template.zip my-electron-app
2.離線環(huán)境使用
- 解壓項(xiàng)目模板:
-
unzip electron-project-template.zip cd my-electron-app - 創(chuàng)建 electron 緩存目錄:
-
mkdir -p electron-cache/electron/25.9.8
- 復(fù)制 Electron 二進(jìn)制文件:
-
# 將之前下載的 electron 二進(jìn)制文件復(fù)制到緩存目錄 cp electron-offline-packages/electron-v25.9.8-win32-x64.zip electron-cache/electron/25.9.8/ cp electron-offline-packages/SHASUMS256.txt electron-cache/electron/25.9.8/
- 離線安裝依賴
-
# 安裝離線包 npm install ./electron-offline-packages/*.tgz
- 執(zhí)行打包:
-
# 打包應(yīng)用 npm run make - 打包后的輸出目錄:
-
out/ ├── make/ │ └── squirrel.windows/ │ └── x64/ │ ├── my_electron_app-1.0.0 Setup.exe │ └── ... └── my-electron-app-win32-x64/ └── my-electron-app.exe
3.網(wǎng)絡(luò)問(wèn)題
- 離線環(huán)境 npm run make 時(shí)會(huì)出現(xiàn) econnrefuesd ip地址 錯(cuò)誤 這個(gè)錯(cuò)誤是因?yàn)樵陔x線環(huán)境下還在嘗試連接 npm 鏡像源。
- 需要完全禁用網(wǎng)絡(luò)請(qǐng)求: 首先修改 .npmrc 文件:
-
registry=https://registry.npmmirror.com/ //或者換成本地代理地址http://localhost:4873/ electron_mirror=file:///D:/Electron/my-electron-app/electron-cache/ //換成 electron_custom_dir=25.9.8 offline=true prefer-offline=true no-proxy=true https-proxy=false proxy=false
- 修改 forge.config.js:
-
module.exports = { packagerConfig: { asar: true, download: { mirror: "file:///D:/Electron/my-electron-app/electron-cache/", cache: "./electron-cache", force: false }, electronZipDir:'./electron-cache/electron/25.9.8/' // 這行☆☆☆☆☆ }, makers: [ { name: '@electron-forge/maker-squirrel', config: { name: 'my_electron_app' } }, { name: '@electron-forge/maker-zip', platforms: ['win32'] } ], // 添加離線配置 ☆☆☆☆☆ electronRebuildConfig: { onlyModules: [], force: false, offline: true } };
- 確保電子緩存目錄結(jié)構(gòu)正確:
-
electron-cache/ └── electron/ └── 25.9.8/ ├── electron-v25.9.8-win32-x64.zip ├── electron-v25.9.8-win32-ia32.zip (如果需要) └── SHASUMS256.txt
- 運(yùn)行打包時(shí)使用離線模式:
-
# Windows set ELECTRON_ENABLE_OFFLINE_MODE=1 npm run make --offline # Linux/Mac export ELECTRON_ENABLE_OFFLINE_MODE=1 npm run make --offline

浙公網(wǎng)安備 33010602011771號(hào)