Какова цель папки buildResources в процессе сборки электронного строителя?

Я читаю electron и electron-builder документы, но все еще не совсем понимаю, для чего нужна папка buildResources?

Вот что говорится в документации по конфигурации для electronic-builder:

buildResources = build String - путь для создания ресурсов.

Вроде говорит само за себя ... Но как и когда они участвуют в процессе сборки, особенно имея это:

... ресурсы сборки не упакованы в приложение. Если вам нужно использовать какие-то файлы, например как значок в трее, пожалуйста, явно включите необходимые файлы

Можем ли мы просто поместить эти файлы значков в произвольную папку, а затем скопировать их в app/ вручную (поскольку нам в любом случае нужно включить buildResources вручную)?


person jayarjo    schedule 04.03.2019    source источник


Ответы (2)


TL; DR:

Насколько я могу судить с первого взгляда на исходный код, папка buildResources используется для хранения дополнительных скриптов, плагинов и т. Д., Которые могут использоваться программой для сборки пакетов. Electron-builder сам не генерирует пакеты, он использует такие инструменты, как NSIS.

Объяснение:

У меня был тот же вопрос, и, к сожалению, я не нашел на него однозначного ответа. Запись в документации бесполезна. Я узнал, что кто-то спрашивал об этом в проблемах GitHub, но так и не получил Ответ.

Я решил сам немного покопаться в коде, чтобы узнать, что он делает. В NsisTargets.ts вы можете видеть, что папка buildResources может содержать настраиваемые включения и плагины для NSIS.

// 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.

person Kerim Güney    schedule 09.04.2020
comment
Если вы включите соответствующие фрагменты кода, на которые вы ссылались в своем ответе, я отмечу его как правильный. Код видоизменяется, поэтому ссылка может недолго оставаться актуальной. - person jayarjo; 09.04.2020
comment
@jayarjo Я думаю, что ссылки указывают на конкретную фиксацию и поэтому всегда должны работать, но тем не менее я добавил несколько фрагментов кода. Спасибо! - person Kerim Güney; 10.04.2020
comment
@ KerimGüney Кроме того, согласно документации, если вы хотите использовать файлы лицензий для нескольких языков, они должны находиться в папке buldResources. - person knaos; 29.03.2021

Итак, сразу скажу, что документация на этот вариант просто ужасна.

Файлы, включенные в buildResources, появятся в файле asar, документацию по которому вы можете найти на веб-сайте Electron.

Параметр files будет включать файлы, такие как изображения, которые недоступны в файле asar.

I.E.

учитывая, что у меня есть папка с именем assets в моей папке сборки, которую я хочу включить в свое приложение.

"files": [
  "./build/**/*"
],
"directories": {
  "buildResources": "assets"
}

Это поместит все папки внутри сборки в файл asar, который вы затем можете распаковать, включив,

"asarUnpack": "**/assets/*"

Это поместит активы папки в папку сборки в каталоге приложения.

person Daniel Hix    schedule 11.03.2019
comment
Но в документации написано, что ничего из buildResources не будет автоматически включено в файл asar? Это то, что я наблюдаю здесь, кстати. - person jayarjo; 11.03.2019
comment
Я ценю усилия, но это ничего не объясняет. это тоже неправильно. Папки buildResources не включены в файл asar. Я также не совсем понимаю, какой смысл объяснять поле файлов, что, кстати, тоже неверно. Вы случайно перепутали их? Даже тогда это не совсем объясняет, что делает buildResources. - person Kerim Güney; 08.04.2020