在 Electron Builder 中,files、extraResources、extraFiles 都是用来控制 哪些文件会被包含到打包产物中,但它们作用的阶段和目标位置 完全不同。
下面是详细的区别对比:
🧩 一、files
📘 作用:
指定哪些文件/目录会被打进 app.asar 或 resources/app 中,也就是应用的核心源代码部分。
📂 默认行为:
如果不配置,Electron Builder 会默认包含 package.json、main.js、dist 等构建输出目录。
但你可以通过 files 精确控制要包含或排除的文件。
🧱 典型用法:
"files": [
"dist/",
"main.js",
"package.json",
"!**/*.map",
"!tests/**"
]
📍 文件最终位置:
-
打包后:
resources/app.asar(或者如果禁用asar,则是resources/app/)
✅ 适用场景:
-
应用自身的代码、资源文件、前端静态文件。
-
不建议放大的二进制文件或dll。
📦 二、extraResources
📘 作用:
用于将 非源码文件(如模型、DLL、配置文件、数据库、图像模板等)复制到最终打包目录的 resources/ 下。
这些文件 不会被打进 app.asar。
🧱 典型用法:
"extraResources": [
{
"from": "assets/",
"to": "assets/",
"filter": ["**/*"]
},
{
"from": "native/",
"to": "native/",
"filter": ["*.dll"]
}
]
📍 文件最终位置:
-
打包后路径:
resources/assets/...
resources/native/...
✅ 适用场景:
-
运行时需要动态加载的资源文件,比如:
-
DLL(用于
koffi.load()或ffi) -
外部配置文件
-
模型文件(AI 模型、权重文件)
-
需要用户可替换的内容
-
🧰 三、extraFiles
📘 作用:
将文件复制到 最终安装包的根目录(或者与可执行文件同级目录),而不是 resources/。
🧱 典型用法:
"extraFiles": [
{
"from": "tools/",
"to": "tools/",
"filter": ["*.exe"]
}
]
📍 文件最终位置:
-
打包后路径(以 Windows 为例):
MyApp/ ├─ MyApp.exe ├─ tools/ │ └─ helper.exe └─ resources/
✅ 适用场景:
-
需要与主程序同级放置的可执行文件、脚本或驱动安装程序。
-
例如主进程需要
spawn('tools/helper.exe')。
📊 对比表
| 参数 | 打包位置 | 是否进入 app.asar | 适合的文件类型 | 示例用途 |
|---|---|---|---|---|
| files | resources/app.asar 或 resources/app/ | ✅ 是 | 源码、静态资源 | 你的 Electron 应用代码 |
| extraResources | resources/ | ❌ 否 | DLL、配置、AI模型、数据文件 | 运行时动态加载文件 |
| extraFiles | 应用根目录,与 .exe 同级 | ❌ 否 | 外部工具、独立程序 | 辅助命令行工具、驱动安装器 |
1427

被折叠的 条评论
为什么被折叠?



