背景
電腦是用的mac,安裝了parallels desktop ,想用electron 想同時打包出? 蘋果版本和windows版本。因為是在虛擬機里安裝,它常被我重裝,所以記錄一下打包的整個過程。另外就是node生態太活躍,幾個依賴沒記錄具體版本,很容易各種報錯。
需要環境
window10
node: 18.18.2
yarn: 1.22.21
nrm: 1.2.6
electron:?23.3.13
準備配置環境
1、安裝nvm(方便切換node版本)
到?Releases · coreybutler/nvm-windows · GitHub
下載?nvm-setup 并安裝?
2、選擇node版本(當前作者使用的是18.18.2,雖然當前最新版本已經上20了)
在cmd中安裝node版本
> nvm install?18.18.2
3、切換鏡像(沒有設置鏡像前,有時會舉步維艱)
>?npm config set registry https://registry.npmmirror.com/
4、安裝nrm(以前只知道淘寶源,現在發現有nrm可以管理源,在有些源更新不及時,切換一下或許就成功了)
>?npm install -g nrm
5、查看選擇源
nrm ls
選擇 tencent? (因為作者在當時使用taobao云時,有個依賴一直超時,選擇tencent后,可以了)
nrm use tencent
6、安裝yarn (為什么安裝yarn,有些依賴關系你沒搞懂前,你用npm試試,絕對會讓你懷疑人生)
> npm install -g yarn
7、初始化項目(注意填寫 author 和 description ,在后面的打包中是必須項)
> yarn init
8、開始安裝electron 23
> yarn add electron@23.3.13
或者你不知道23版本哪個最新
> yarn add electron@23
?
運行時查看
1、安裝官方的例子,假設我們的入口文件是? index.html
我們新建一個? main.js? 拷貝官方的代碼
const { app, BrowserWindow } = require('electron/main')const createWindow = () => {const win = new BrowserWindow({width: 800,height: 600})win.loadFile('index.html')
}app.whenReady().then(() => {createWindow()app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) {createWindow()}})
})app.on('window-all-closed', () => {if (process.platform !== 'darwin') {app.quit()}
})
2、修改 package.json? (加入一個? start? 腳本)
{"name": "my-electron-app","version": "1.0.0","author": "hott1985","description": "Hello World!","main": "main.js","scripts": {"start": "electron .","test": "echo \"Error: no test specified\" && exit 1"},"license": "MIT","devDependencies": {"electron": "23.1.3"}
}
3、運行查看
>?yarn run start
打包exe?
因為我們的環境是window10所以打包出來可能是exe的
1、安裝打包依賴? ? (官方方法是? yarn add --dev @electron-forge/cli? ?上面有? --dev? 但是因為我們用的不是最新的,所以不要加? --dev? 由 yarn 自動去分析依賴關系)
>?yarn add @electron-forge/cli
?
2、?使用現成的轉化腳本將項目導入至 Electron Forge
>?npx electron-forge import
3、這個時候的package.json大概是長這樣的
{"name": "my-electron-app","version": "1.0.0","main": "main.js","author": "hott1985","description": "Hello World!","scripts": {"start": "electron-forge start","test": "echo \"Error: no test specified\" && exit 1","package": "electron-forge package","make": "electron-forge make"},"license": "MIT","dependencies": {"@electron-forge/cli": "^7.3.0","@electron-forge/plugin-fuses": "^7.3.0","@electron/fuses": "^1.7.0","electron-squirrel-startup": "^1.0.0"},"devDependencies": {"@electron-forge/maker-deb": "^7.3.0","@electron-forge/maker-rpm": "^7.3.0","@electron-forge/maker-squirrel": "^7.3.0","@electron-forge/maker-zip": "^7.3.0","@electron-forge/plugin-auto-unpack-natives": "^7.3.0","electron": "23.3.13"}
}
4、補全2個官方沒提到的依賴 (官方文檔中,可以直接打包了,實際還爆2個依賴沒裝上)
> yarn add @electron-forge/plugin-fuses?
?
繼續試試
?
> yarn add @electron/fuses?
?可以進入運行時了
5、打包make
?如果你前面沒有在package.json中加入作者author和描述description 就會有錯誤
加上去重新執行就能在打包成了