электронный пакет: уменьшить размер пакета

Я сделал простое приложение Electron:

main.js

const {app, BrowserWindow} = require('electron')
const path = require('path')
const url = require('url')

let win

function createWindow () {
  win = new BrowserWindow({
    width: 800, 
    height: 600, 
    icon: path.join(__dirname, 'icon.ico')
  })

  win.maximize();

  win.loadURL('https://stackoverflow.com/', {"extraHeaders" : "pragma: no-cache\n"});

  win.on('closed', () => {
    win = null
  })
}

app.on('ready', createWindow)

app.on('browser-window-created',function(e,window) {
    window.setMenu(null);
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  if (win === null) {
    createWindow()
  }
})

package.json

{
  "name": "test",
  "version": "1.0.0",
  "main": "main.js",
  "build": {
    "appId": "com.test.app",
    "copyright": "test",
    "productName": "test"
  },
  "devDependencies": {
    "electron": "1.7.9",
    "electron-builder": "^19.46.4",
    "electron-packager": "^10.1.0"
  }
}

с помощью electronic-packager я собрал пакет для выпуска:

electron-packager . --overwrite --asar=true --platform=win32 --arch=ia32 --prune=true --out=release-builds

общий размер собранного пакета составляет 107 МБ.

У кого-нибудь есть советы по уменьшению размера упаковки?


person ar099968    schedule 01.12.2017    source источник
comment
Вы смотрели: github.com/electron/electron/issues/2003 ? Участники электронных проектов говорят, что это ожидаемый размер, потому что Windows добавляет копию Git в приложение, а также у вас будут некоторые части Chrome в вашем приложении, что сделает его огромным без видимых причин. Если вы планируете распространять свое приложение через Интернет, я настоятельно рекомендую вам заархивировать приложение, прежде чем разрешать загрузку. См .: digitalocean.com/community/tutorials/ (руководство по Nginx)   -  person Maxime Flament    schedule 01.12.2017


Ответы (4)


Вы можете уменьшить размер электронного приложения, упаковав его с помощью пакета electronic-builder.

PicArt - это приложение electronicjs, которое я разработал недавно. Он построен с использованием responseJS. Изначально, когда я упаковывал приложение с помощью electronic-packager, размер сборки Window составлял около 98 МБ. Затем я нашел этот замечательный шаблон electronic-react, в котором они настроили конструктор электронов для создания оптимизированных размер сборки. После использования этой настройки размер сборки PicArt теперь составляет около 36 МБ.

Да, можно уменьшить размер приложения, но настройка сборки требует больших затрат времени и усилий.

person Bharathvaj Ganesan    schedule 15.09.2018
comment
Я использую Vue с электроном, так есть ли для Vue шаблон эквивалентности? - person K. Symbol; 10.07.2019
comment
@ K.Symbol да. вы можете найти его здесь - person Bharathvaj Ganesan; 10.07.2019
comment
Да, за месяц до этого, когда я начал создавать свое приложение, я подумал об этом, но в конце концов выбрал nklayman.github.io/vue-cli-plugin-electron-builder. Размер упакованного .exe составляет 93,1 МБ, а после архивирования - 60 МБ, теперь я считаю приемлемым. - person K. Symbol; 11.07.2019

Мне удалось уменьшить окончательный размер моего приложения для Mac с 250 МБ до 128 МБ, переместив «электрон» и мои responseJs dependencies на devDependencies в package.json ... поскольку все, что мне нужно, это будет в финальном файле bundle.js

Но, к сожалению, я не смог получить его ниже, потому что электронный фреймворк имеет размер 118 МБ, что неплохо, если вы делаете небольшое приложение, но я предполагаю, что это цена, которую нужно заплатить за создание кроссплатформенности. веб-приложения

person Sodj    schedule 18.09.2018

Я столкнулся с той же проблемой с приложением размером 200 МБ. Удалось уменьшить его до 176 МБ и, наконец, до 55 МБ.

Вот что я сделал (если поможет):

  • Electron-builder: для упаковки приложения.
  • Удаление: чтобы очистить неиспользуемые модули.
  • Очистка файла package.json: зависимости

Упаковка приложения:

Примечание: я сделал приложение для Windows.

В документации упоминается двухэтапный метод package.json, но после того, как я попробовал (и подтвердил документы), он не нужен.

Как ни странно для меня, то, что сработало, было удалено всю мою папку «Node Modules» и запущено «npm install», чтобы вернуть все обратно. Сразу после этого я запустил npm prune, чтобы очистить все неиспользуемые в папке «Node Modules» (хотя я только что запустил npm install). Я также дважды проверил, нет ли в моем разделе «зависимостей» файла package.json ни электрона, ни построителя электронов. После этого я запаковал приложение /

Как все, вероятно, уже знают, с электронным построителем ваша папка dist (если вы не изменили каталог по умолчанию) должна содержать файл .exe непосредственно в каталоге dist и папку unpackaged, содержащую файл .exe, который зависит от связанные файлы внутри той же папки. Однако имеющийся у меня .exe файл (тот, который находится непосредственно в папке dist) имеет размер всего 55 МБ. Хотя, честно говоря, этот файл устанавливает программу, и после установки его размер увеличивается примерно до 171 МБ.

Я опубликую еще раз, если найду другой способ вообще уменьшить размер файла.

person Bobbyv231    schedule 03.03.2021

Я использую electronic-builder для упаковки электронного приложения.

  1. Не включайте node_modules в процесс сборки.

Ссылка: https://github.com/electron-userland/electron-builder/issues/1911

Старайтесь не включать node_modules в свой app.asar, как показано ниже. build: {... files: [! node_modules], ...}

Реализуя вышесказанное, у нас есть файл package.json:


  "build": {
    "appId": "org.jitsi.roundesk",
    "productName": "roundesk",
    "generateUpdatesFilesForAllChannels": true,
    "afterPack": "./linux-sandbox-fix.js",
    "files": [
      "**/*",
      "resources",
      "!app",
      "!main.js",
      "!node_modules"
    ],

Ссылка на образец кода: https://github.com/jitsi/jitsi-meet-electron/blob/master/package.json

Мы получаем следующее уменьшение размера приложения, как показано ниже. (В МБ)  введите описание изображения здесь

person krishna kurtakoti    schedule 10.05.2021