Table of Contents
为 electron 项目新建一个目录,并初始化 npm
例如新建文件目录为 testDesktopApp,再初始化 npm
npm init# 一路回车即可修改 package.json 文件,将 name 修改为最终桌面可执行程序的名称,将 main 中的 index.js 修改为 main.js 防止与要打包项目的 js 文件冲突,并在 script 中添加 start 命令。
{ "name": "testdesktopapp", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "electron ." }, "author": "", "license": "ISC"}在项目中安装 electron
使用—registry 与—ELECTRON_MIRROR 命令从淘宝源安装 electron
npm install --save-dev electron --registry=https://registry.npm.taobao.org --ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/新建 main.js 文件
const { app, BrowserWindow, Menu, Tray } = require("electron");function createWindow() { // 不显示菜单栏 Menu.setApplicationMenu(null); // 创建浏览器窗口 let win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, }, });
// 加载index.html文件 win.loadFile("./www/index.html");
// // 打开开发者工具 // win.webContents.openDevTools();
// 当 window 被关闭,这个事件会被触发。 win.on("closed", () => { // 取消引用 window 对象,如果你的应用支持多窗口的话, // 通常会把多个 window 对象存放在一个数组里面, // 与此同时,你应该删除相应的元素。 win = null; });}
app.on("ready", createWindow);// 当全部窗口关闭时退出。app.on("window-all-closed", () => { // 在 macOS 上,除非用户用 Cmd + Q 确定地退出, // 否则绝大部分应用及其菜单栏会保持激活。 if (process.platform !== "darwin") { app.quit(); }});
app.on("activate", () => { // 在macOS上,当单击dock图标并且没有其他窗口打开时, // 通常在应用程序中重新创建一个窗口。 if (win === null) { createWindow(); }});前端文件的准备
- 如果是原生的 js 文件,没有使用框架,可以直接放入 electron 项目的 www 目录中,如 testDesktopApp 下的 www 文件夹
- 如果使用了 vue 框架,则需要修改 router.js 中 mode 为 hash,vue.config.js 中 publicPath 为”./“,再进行打包,将打包后 dist 文件夹中的文件放入 www 文件目录中
运行 electron
执行 npm start 命令,即可运行 electron
打包部署 electron 项目使用第三方打包工具 electron-builder
安装 electron-builder
npm install --save-dev electron-builder --registry=https://registry.npm.taobao.org/在 package.json 中加入命令
scripts 中增加 pack 与 dist 命令,pack 命令打包出免安装版文件,dist 命令打包出可执行安装文件,不论是安装版还是免安装版,文件都在 dist 目录下。
新增 build 属性,配置打包出 windows 系统下 x86 和 x64 都兼容的文件。
{ "name": "testdesktopapp", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "electron .", "pack": "electron-builder --dir", "dist": "electron-builder" }, "author": "", "license": "ISC", "devDependencies": { "electron": "^5.0.2", "electron-builder": "^20.41.0" }, "build": { "win": { "target": [ { "target": "nsis", "arch": ["x64", "ia32"] } ] } }}修改应用程序名称与图标
应用程序名称默认为 package.json 中的 name 属性,进入应用程序后则会读取 www 下 index.html 的 title 标签。
项目图标直接在 electron 项目目录下放置一个名为 icon 的图标文件即可,要求是 ico 格式或 png 格式,最好是 512*512 像素的方形图标。
部署应用程序,生成安装可执行文件
npm run dist打包部署完成后会在 electron 项目根目录下生成一个 dist 文件夹,其中 x86 版免安装文件夹为 win-ia32-unpacked,x64 版免安装文件夹为 win-unpacked,安装可执行文件为项目名 + Setup + 版本号.exe,例如 testdesktopapp Setup 1.0.0.exe。