Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Сборка и установщики

Пользователь не запускает npm start — ему нужна программа с ярлыком или установщик. Electron Forge собирает готовую программу (копию Electron с вашим кодом внутри) и упаковывает её в установщики для разных систем. Установщики создают отдельные модули — мейкеры (makers).

Подключение Forge к ручному проекту

Если проект создан через npm init electron-app, Forge уже настроен. В проект из урока «Первое приложение вручную» его добавляют так:

npm install --save-dev @electron-forge/cli
npx electron-forge import

Команда import установит нужные пакеты, создаст forge.config.js и заменит скрипты в package.json на electron-forge start, package и make.

Сборка программы

npm run package

В папке out/ появится каталог вроде notes-win32-x64 с файлом notes.exe (в macOS — notes.app). Его можно запустить двойным щелчком. Код программы лежит внутри в архиве resources/app.asar.

Установщик

npm run make

Команда сначала выполняет package, затем запускает мейкеры для текущей системы. Результат — в папке out/make/: в Windows там будет Setup.exe, в macOS — архив .zip.

Настройки

Сборку описывает файл forge.config.js:

// forge.config.js
module.exports = {
  packagerConfig: {
    asar: true,
    icon: 'assets/icon',
  },
  makers: [
    { name: '@electron-forge/maker-squirrel', config: {} },
    { name: '@electron-forge/maker-zip', platforms: ['darwin'] },
    { name: '@electron-forge/maker-deb', config: {} },
  ],
};

icon указывают без расширения: Forge возьмёт assets/icon.ico для Windows и assets/icon.icns для macOS. Название программы берётся из полей productName и version в package.json.

Мейкеры

МейкерСистемаРезультат
maker-squirrelWindowsУстановщик Setup.exe
maker-zipmacOS, Windows, LinuxАрхив .zip
maker-dmgmacOSОбраз диска .dmg
maker-debDebian, UbuntuПакет .deb
maker-rpmFedoraПакет .rpm

Каждый мейкер — отдельный пакет npm, например npm install --save-dev @electron-forge/maker-dmg.

Сборка для других систем

Установщик для системы обычно собирают на этой же системе: для macOS — на Mac, для Windows — на Windows. Чтобы не держать три компьютера, используют сервис непрерывной интеграции, например GitHub Actions, где задача выполняется на машинах с разными системами.

Частая ошибка

Forge кладёт в программу только пакеты из dependencies, а devDependencies отбрасывает. Если библиотеку, нужную главному процессу, установить с --save-dev, программа будет работать через npm start, но после сборки упадёт с ошибкой Cannot find module. То, что нужно во время работы программы, ставьте обычным npm install.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.