Electron项目打包的dmg文件缺失package.json等元数据求助
一、解决release文件夹缺失问题
调整资源包含配置:当前
files仅包含dist、node_modules、package.json,若需打包根目录下的release文件夹,需将其添加至extraResources:"extraResources": [ "./assets/**", "./release/**" ]注意:若
release/app是你指定的应用源码目录(对应directories.app配置),files中的路径是相对该目录的;若release在项目根目录,需确保路径匹配实际位置。核对目录配置逻辑:
directories.app = "release/app"意味着electron-builder会以release/app作为应用打包的根目录。如果release下还有其他需打包的资源(如文档、额外工具),需通过extraResources单独声明,而非依赖files配置。
二、修复package.json元数据缺失问题
确保package.json被正确打包:检查
release/app目录下是否存在完整的package.json(包含你需要的所有元数据字段),并确认files配置中已包含该文件。若你的主package.json在项目根目录,需确保构建脚本将其完整复制到release/app目录。修正应用内读取逻辑:在Electron代码中,需使用
app.getAppPath()获取应用的绝对路径,再读取package.json,避免使用相对路径导致打包后无法正确读取。示例代码:const { app } = require('electron'); const path = require('path'); const packageJson = require(path.join(app.getAppPath(), 'package.json'));验证打包后内容:右键DMG中的应用选择「显示包内容」,检查
Contents/Resources目录下的package.json是否完整。若缺失,需调整files配置,确保文件被正确纳入打包范围。
三、额外排查步骤
- 清理构建缓存:删除旧构建产物目录
release/build后重新构建,避免缓存导致的文件遗漏。 - 排除签名脚本影响:暂时注释
afterSign配置,重新打包测试,确认是否是公证脚本修改或删除了文件。 - 指定DMG构建目标:将
mac.target明确设置为dmg,避免默认打包逻辑的潜在问题:"mac": { "target": [ "dmg", "zip" ], // 其余原有配置... }
内容的提问来源于stack exchange,提问作者otJB

