我正在阅读electron
和electron-builder
文档,但是我仍然不太了解buildResources
文件夹的用途?
这是electron-builder的配置文档所说的:
buildResources
=构建 字符串-构建资源的路径。
一种不言自明的方法……但是他们如何或何时参与构建过程,尤其是具有以下内容:
...构建资源未打包到应用程序中。如果您需要使用一些 文件,例如作为任务栏图标,请明确包含所需文件
我们可以简单地将这些图标文件放在任意文件夹中,然后手动复制到app/
中吗(因为无论如何我们都需要手动包含buildResources
)?
答案 0 :(得分:5)
TL; DR:
据我快速浏览一下源代码,buildResources
文件夹用于存放可由软件包构建软件使用的其他脚本,插件等。 Electron-builder不会自行生成软件包,而是使用NSIS之类的工具。
说明:
我遇到了同样的问题,不幸的是,这并不是很简单的答案。 docs条目非常没用。我发现有人在GitHub issues上问了这个问题,但没有得到答案。
我决定自己亲自研究一下代码,以了解它的作用。在NsisTargets.ts
中,您可以看到buildResources
文件夹可以包含自定义包含项和用于NSIS的plugins。
// NsisTargets.ts
taskManager.add(async () => {
const userPluginDir = path.join(packager.info.buildResourcesDir, pluginArch)
const stat = await statOrNull(userPluginDir)
if (stat != null && stat.isDirectory()) {
scriptGenerator.addPluginDir(pluginArch, userPluginDir)
}
})
// [...]
taskManager.add(async () => {
const customInclude = await packager.getResource(this.options.include, "installer.nsh")
if (customInclude != null) {
scriptGenerator.addIncludeDir(packager.info.buildResourcesDir)
scriptGenerator.include(customInclude)
}
})
,在pkg.ts
中,它用于将其他脚本加载到pkg构建器中:
// pkg.ts
if (options.scripts != null) {
args.push("--scripts", path.resolve(this.packager.info.buildResourcesDir, options.scripts))
}
似乎buildResources
可以包含专门用于构建过程的资产/脚本。这也解释了为什么buildResources
的内容未包含在生成的app.asar
文件中。
答案 1 :(得分:0)
所以,我马上要说这个选项的文档太糟糕了。
buildResources
中包含的文件将出现在asar文件中,您可以在electronic网站上找到有关该文件的文档。
选项files
将包含诸如asar文件中不可访问的图片之类的文件。
IE。
假设我要在应用程序中包含的构建文件夹中有一个名为Assets的文件夹。
"files": [
"./build/**/*"
],
"directories": {
"buildResources": "assets"
}
这会将构建中的所有文件夹放入asar文件,然后您可以通过将其包含在内来解压缩
"asarUnpack": "**/assets/*"
这会将文件夹资产放入app目录中的build文件夹中。