開發electron客戶端程序,打包是繞不開的問題。下面就我在工做中的經驗以及目前對electron-builder
的瞭解來分享一些心得。html
官網的定義node
A complete solution to package and build a ready for distribution Electron app for macOS, Windows and Linux with 「auto update」 support out of the box.
關於electron
和electron-builder
的基礎部分這篇文章就跳過了,有興趣的話能夠看這篇文章linux
builder的使用和配置都是很簡單的
builder配置有兩種方式webpack
package.json
中直接配置使用(比較經常使用,咱們下面着重來說這個)electron-builder.yml
文件demo地址會在文章末尾給出(demo項目中electron
使用得是V2.0.7
版本,目前更高得是2.0.8
版本)。git
下面是一個簡單的package.js
中帶註釋的配置github
"build": { // 這裏是electron-builder的配置 "productName":"xxxx",//項目名 這也是生成的exe文件的前綴名 "appId": "com.xxx.xxxxx",//包名 "copyright":"xxxx",//版權 信息 "directories": { // 輸出文件夾 "output": "build" }, // windows相關的配置 "win": { "icon": "xxx/icon.ico"//圖標路徑 } }
在配置文件中加入以上的文件以後就能夠打包出來簡單的<font clolor="red">文件夾</font>,文件夾確定不是咱們想要的東西。下一步咱們來繼續講別的配置。web
要打包成安裝程序的話咱們有兩種方式,macos
"win": { // 更改build下選項 "icon": "build/icons/aims.ico", "target": [ { "target": "nsis" // 咱們要的目標安裝包 } ] },
"dmg": { // macOSdmg "contents": [ ... ] }, "mac": { // mac "icon": "build/icons/icon.icns" }, "linux": { // linux "icon": "build/icons" }
這個要詳細的講一下,這個nsis的配置指的是安裝過程的配置,其實仍是很重要的,若是不配置nsis那麼應用程序就會自動的安裝在C盤。沒有用戶選擇的餘地,這樣確定是不行的npm
關於nsis的配置是在build中nsis這個選項中進行配置,下面是部分nsis配置json
"nsis": { "oneClick": false, // 是否一鍵安裝 "allowElevation": true, // 容許請求提高。 若是爲false,則用戶必須使用提高的權限從新啓動安裝程序。 "allowToChangeInstallationDirectory": true, // 容許修改安裝目錄 "installerIcon": "./build/icons/aaa.ico",// 安裝圖標 "uninstallerIcon": "./build/icons/bbb.ico",//卸載圖標 "installerHeaderIcon": "./build/icons/aaa.ico", // 安裝時頭部圖標 "createDesktopShortcut": true, // 建立桌面圖標 "createStartMenuShortcut": true,// 建立開始菜單圖標 "shortcutName": "xxxx", // 圖標名稱 "include": "build/script/installer.nsh", // 包含的自定義nsis腳本 這個對於構建需求嚴格得安裝過程至關有用。 "script" : "build/script/installer.nsh" // NSIS腳本的路徑,用於自定義安裝程序。 默認爲build / installer.nsi },
關於include
和 script
到底選擇哪個 ?
在對個性化安裝過程需求並不複雜,只是須要修改一下安裝位置,卸載提示等等的簡單操做建議使用include
配置,若是你須要炫酷的安裝過程,建議使用script
進行徹底自定義。
NSIS
對於處理安裝包這種東西,功能很是的強大。可是學習起來並不比一門高級語言要容易。其中的奧祕還要各位大佬自行探索
這裏上一些學習資源
主要是windows中64和32位的配置
CLI參數
electron-builder --ia32 // 32位 electron-builder // 64位(默認)
nsis中配置
"win": { "icon": "build/icons/aims.ico", "target": [ { "target": "nsis", "arch": [ // 這個意思是打出來32 bit + 64 bit的包,可是要注意:這樣打包出來的安裝包體積比較大,因此建議直接打32的安裝包。 "x64", "ia32" ] } ] }
下面這個是給更新用的配置,主要是爲了生成lastest.yaml
配置文件
"publish": [ { "provider": "generic", // 服務器提供商 也能夠是GitHub等等 "url": "http://xxxxx/" // 服務器地址 } ],
基本上可用的完整的配置
"build": { "productName":"xxxx",//項目名 這也是生成的exe文件的前綴名 "appId": "com.leon.xxxxx",//包名 "copyright":"xxxx",//版權 信息 "directories": { // 輸出文件夾 "output": "build" }, "nsis": { "oneClick": false, // 是否一鍵安裝 "allowElevation": true, // 容許請求提高。 若是爲false,則用戶必須使用提高的權限從新啓動安裝程序。 "allowToChangeInstallationDirectory": true, // 容許修改安裝目錄 "installerIcon": "./build/icons/aaa.ico",// 安裝圖標 "uninstallerIcon": "./build/icons/bbb.ico",//卸載圖標 "installerHeaderIcon": "./build/icons/aaa.ico", // 安裝時頭部圖標 "createDesktopShortcut": true, // 建立桌面圖標 "createStartMenuShortcut": true,// 建立開始菜單圖標 "shortcutName": "xxxx", // 圖標名稱 "include": "build/script/installer.nsh", // 包含的自定義nsis腳本 }, "publish": [ { "provider": "generic", // 服務器提供商 也能夠是GitHub等等 "url": "http://xxxxx/" // 服務器地址 } ], "files": [ "dist/electron/**/*" ], "dmg": { "contents": [ { "x": 410, "y": 150, "type": "link", "path": "/Applications" }, { "x": 130, "y": 150, "type": "file" } ] }, "mac": { "icon": "build/icons/icon.icns" }, "win": { "icon": "build/icons/aims.ico", "target": [ { "target": "nsis", "arch": [ "ia32" ] } ] }, "linux": { "icon": "build/icons" } }
Commands(命令):
electron-builder build 構建命名 [default] electron-builder install-app-deps 下載app依賴 electron-builder node-gyp-rebuild 重建本身的本機代碼 electron-builder create-self-signed-cert 爲Windows應用程序建立自簽名代碼簽名證書 electron-builder start 使用electronic-webpack在開發模式下運行應用程序(須臾要electron-webpack模塊支持)
Building(構建參數):
--mac, -m, -o, --macos Build for macOS, [array] --linux, -l Build for Linux [array] --win, -w, --windows Build for Windows [array] --x64 Build for x64 (64位安裝包) [boolean] --ia32 Build for ia32(32位安裝包) [boolean] --armv7l Build for armv7l [boolean] --arm64 Build for arm64 [boolean] --dir Build unpacked dir. Useful to test. [boolean] --prepackaged, --pd 預打包應用程序的路徑(以可分發的格式打包) --projectDir, --project 項目目錄的路徑。 默認爲當前工做目錄。 --config, -c 配置文件路徑。 默認爲`electron-builder.yml`(或`js`,或`js5`)
Publishing(發佈):
--publish, -p 發佈到GitHub Releases [choices: "onTag", "onTagOrDraft", "always", "never", undefined]
<font color="red">Deprecated(廢棄):</font>
--draft 請改成在GitHub發佈選項中設置releaseType [boolean] --prerelease 請改成在GitHub發佈選項中設置releaseType [boolean] --platform 目標平臺 (請更改成選項 --mac, --win or --linux) [choices: "mac", "win", "linux", "darwin", "win32", "all", undefined] --arch 目標arch (請更改成選項 --x64 or --ia32) [choices: "ia32", "x64", "armv7l", "arm64", "all", undefined]
Other(其餘):
--help Show help [boolean] --version Show version number [boolean]
Examples(例子):
electron-builder -mwl 爲macOS,Windows和Linux構建(同時構建) electron-builder --linux deb tar.xz 爲Linux構建deb和tar.xz electron-builder -c.extraMetadata.foo=bar 將package.js屬性`foo`設置爲`bar` electron-builder --config.nsis.unicode=false 爲NSIS配置unicode選項
TargetConfiguration(構建目標配置):
target: String - 目標名稱,例如snap. arch 「x64」 | 「ia32」 | 「armv7l」 | 「arm64」> | 「x64」 | 「ia32」 | 「armv7l」 | 「arm64」 -arch支持列表
NPM
下載的問題
由於NPM
在國內比較慢。致使electron-V.xxxx.zip
下載失敗。這些東西若是是第一次打包的話是須要下載對應electron
版本的支持文件。解決辦法有兩個
.npmrc
文件。而後加入下面這句代碼,可是這個有時候也不是很好用ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/
C:\Users\Administrator\AppData\Local\electron\Cache
。例如我要下載1.8.4版本的electron
,那麼找到鏡像下得文件而後放到指定文件夾中。這就解決了這個問題,簡單又暴力。
NSIS
下載問題若是你要打NSIS
得包還須要西再下載nsis-resources-xxx
等等包。通過上面得經驗這下咱們知道缺什麼就填什麼唄,經過錯誤日誌咱們能夠獲得咱們要下載得版本,通常錯誤中一般會展現github
下載地址,直接點開鏈接去下載。可是位置此次不同了。由於這是electron-builder
的支持環境因此咱們要放在C:\Users\Administrator\AppData\Local\electron-builder\cache\nsis\
下了。
通常狀況下解決這些問題的思路就是,缺什麼拿什麼😄。
electron-builder是一個簡單又強大的庫。反正我是很服
原文地址 若是以爲有用得話給個⭐吧