Electron-开发实践:Mac打包
【前言】
当本地开发好一个 electron 应用后,
最想做的事情就是打包然后分享出去。
如何用 monorepo 管理一个 electron 项目,
可以看这里: Electron-开发实践:使用Monorepo管理Electron项目
【构建】
接上一篇,打包是在 packages/dishi-electron 中实现的,

且这里的 packages/dishi-main 下已经具备本地启动的能力,
main:主进程代码
renderer:渲染进程构建后的代码
package.json:入口
打包的第一步是将源代码构建或者复制到 dishi-electron 下,
这里可以用各种实现方式,本文采用 gulp 实现,
最终效果就是将 dishi-main 文件夹复制到 dishi-electron/dist 文件夹下,
并执行了 npm i,
这样做的好处是可以避免引入一些不需要的依赖,

【图标】
mac 应用包需要自己的一个图标,
如果不定制图标,打包启动后会默认使用 electron 的图标,

定制后的效果(虽然有点丑),

mac 图标的具体制作可以看这篇文章,
最后添加的脚本
"icon": "electron-icns ./pack/icon/pic.webp",
执行的效果

【应用包】
接着是将本地应用打包为 mac 应用包,
即.app 后端的 mac 应用,
打包 mac 应用包有很多方案,
这里使用 electron-packager,https://github.com/electron/electron-packager ,
在 electron-packager 的基础上封装了一个包, https://qiao-electron-cli.vincentqiao.com/#/
配置文件在 dishi-electron/pack/electron.config.js 下,
// pkg
const pkg = require("../dist/package.json");
// const
const arch = process.arch;
const platform = process.platform;
const version = pkg.version;
const iconPath = `pack/icon/icon${platform === "darwin" ? ".icns" : ".ico"}`;
// log
console.log(`arch: ${arch}`);
console.log(`platform: ${platform}`);
console.log(`version: ${version}`);
console.log(`iconPath: ${iconPath}`);
// config
let config = {
// 是否覆盖已经生成的文件
overwrite: true,
// 待打包的文件夹地址
dir: "dist",
// 打包的目标文件夹地址
out: "out",
// 是否将源码打包为 asar 格式
asar: true,
// 打包的 arch
arch: arch,
// 打包的platform
platform: platform,
// 应用的名称
name: "dishi",
// 应用的图标
icon: iconPath,
// 应用版本号
appVersion: version,
// 应用的版权说明
appCopyright: "Copyright © 2023 insistime.com版权所有",
};
// qe config
module.exports = config;
脚本如下,
"packmac": "qelectron pm ./pack/electron.config.js",
执行效果如下,

在 out 文件夹下生成应用包,

且本地双击可以打开,

【安装包】
应用包不方便是直接分发,
这里还需要打一个 mac 的安装包,
同样的还是使用封装的 qiao-electron-cli 这个包,
配置文件同上,
脚本如下,
"packdmg": "qelectron pd ./pack/electron.config.js",
执行效果如下,

在 out 文件夹下生成 dmg 文件,

且双击提示安装

相关推荐
Electron-开发实践:本地日志
【前言】 使用electron开发好本地应用后, 本地日志记录必不可少, 这样可以通过日志获取用户操作信息以及定位bug等, 本地日志与实时性的埋点上报稍微有不同, 本地日志量更大,信息更全,且不是所有信息都时候上报。 【与nodejs本地日志的异同】 electron写本地日志和nodejs写本地
Electron-开发实践:注册快捷键
【前言】 本文介绍一下electron应用中如何注册快捷键 【主进程】 主进程注册快捷键比较简单,需要注意的是在app ready后使用, 常见键盘映射: https://www.electronjs.org/docs/latest/api/accelerator 另外在推出app时需要将所有注册的
Electron-开发实践:几种更新方式
【前言】 Electron开发桌面APP后, 接着涉及一个问题就是如何更新后续的版本, 本文介绍几种更新的方式。 【Electron架构】 用Electron开发的桌面APP, 其实包含几个部分: 1\. Electron本身的环境 2\. 主进程,主进程中又分为Nodejs部分,和非Nodejs部
Electron-开发实践:定制Mac菜单
【前言】 前面几篇文章讲了从开发electron应用到mac打包, 相关文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 Electron开发实践:Mac打包 Electron开发实践:注册
Electron-开发实践:包体积精简
【前言】 前面几篇文章讲了从开发electron应用到mac打包, 相关文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 Electron开发实践:Mac打包 Electron开发实践:注册