按需构建
在开发跨平台桌面应用时,我们常会遇到二进制文件依赖的问题。比如集成 FFmpeg 时,它需要 Windows、macOS 和 Linux 三个平台的版本。如果在打包时不做区分,这三个二进制文件都会被打入构建产物中,导致应用体积显著膨胀。
我们可以通过 forge.config.js 配置文件来实现按需构建,只将当前系统所需的二进制资源包含进去。核心思路是利用 Node.js 的 os.platform() 获取当前运行环境,动态指定资源路径:
const os = require('os');
const platform = os.platform();
const config = {
packagerConfig: {
extraResource: [`./src/main/ffmpeg/${platform}`]
}
};
module.exports = config;
这样配置后,打包工具会根据当前操作系统自动匹配对应的 FFmpeg 版本,有效控制了包体大小。
性能优化
除了按需构建,构建速度与最终体积也是 Electron 项目优化的重点。以 macOS 为例,打包完成后查看应用包内容,会发现一个 app.asar 文件。解压后可以发现其中包含了整个项目的代码,包括 node_modules 目录。这是因为 Electron 的构建机制默认会将 dependencies 中的依赖全部打入 ASAR 包中。
针对这一问题,我有四点优化建议:
- 依赖分类:将 Web 端构建所需的依赖(如样式库、构建工具)放入
devDependencies,只保留 Electron 主进程或渲染进程真正需要的依赖在dependencies中。 - 剔除冗余:将和生产无关的代码及静态资源从构建流程中剔除。
- 按需构建:对跨平台二进制文件执行上述的按需构建策略。
- 清理 node_modules:安装依赖后,使用包管理器的清理命令精简文件夹。
如果是使用 Yarn 安装的依赖,可以在根目录下执行以下命令进行精简:
yarn autoclean -I
yarn autoclean -F
实际测试中,执行完这些操作后,打包体积减少了约 6MB。对于 Pnpm 用户,虽然部分命令可能不适用,但通过合理配置 pnpm 的 shamefully-hoist 或 .npmrc 也能达到类似效果。总之,合理的依赖管理和构建配置是提升 Electron 应用体验的关键。

