aboutsummaryrefslogtreecommitdiff
path: root/_posts/2019-08-15-electron-reload.md
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-09-05 00:16:37 +0300
committerValentin Popov <valentin@popov.link>2024-09-05 00:16:37 +0300
commit7eff3fde5720eb23449e2f8c8ea0b8218efe4dde (patch)
treefbaedd693902c1a6d56a005b28b189ef76fe23f4 /_posts/2019-08-15-electron-reload.md
parentecf9a15e77509d344ab4ee02ae0dbf8a116021f1 (diff)
downloadpopov.link-7eff3fde5720eb23449e2f8c8ea0b8218efe4dde.tar.xz
popov.link-7eff3fde5720eb23449e2f8c8ea0b8218efe4dde.zip
Initial Astro project
Diffstat (limited to '_posts/2019-08-15-electron-reload.md')
-rw-r--r--_posts/2019-08-15-electron-reload.md69
1 files changed, 0 insertions, 69 deletions
diff --git a/_posts/2019-08-15-electron-reload.md b/_posts/2019-08-15-electron-reload.md
deleted file mode 100644
index 21cc2bf..0000000
--- a/_posts/2019-08-15-electron-reload.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-description: >-
- Руководство по автоматической перезагрузке приложений на Electron с помощью пакетов electron-reload и electron-webpack. Обход проблем с совместимостью и использование HMR для renderer процесса.
-title: Горячая перезагрузка ElectronJS приложения
-author: valentineus
-layout: post
----
-
-## Main процесс
-
-Для перезагрузки основного процесса можно использовать готовый пакет [electron-reload]. Или перезагружать приложение средствами пакета [electron-webpack].
-
-Если сборщик кода отличный от WebPack или нет возможности использовать вышеуказанные пакеты, можно обойтись инструментом [nodemon]. Команда запуска будет
-выглядеть следующим образом:
-
-```bash
-nodemon --watch ./assets/main.js --exec 'electron .'
-```
-
-Приложение будет автоматически перезапускаться при модификациях указанного файла.
-
-## Renderer процесс
-
-Для обновления renderer процесса, перезагружать полностью приложение нет необходимости. Достаточно обновить страницу. Самый простой способ, горячие
-клавиши: `Ctrl` + `F5`. Так как рендер процесс по своей сути является обычным окном браузера, можно настроить [HMR] технологию. Конечно, если используются
-соответствующие инструменты.
-
-Мне симпатичен способ использования пакета [electron-reload]. В алгоритме пакета лежит простое слежение за каталогом файлов и обновление активных окон
-приложения.
-
-Но мною была найдена досадная [проблема], не позволяющая использовать версии `1.5.0` и `1.4.1` со сборщиком WebPack, который используется в проекте.
-
-Решение было продублировать основной функционал пакета в проекте:
-
-```javascript
-import { app } from 'electron';
-import chokidar from 'chokidar';
-
-const browserWindows = [];
-
-app.on('browser-window-created', (event, window) => {
- browserWindows.push(window);
-
- window.on('closed', () => {
- const index = browserWindows.indexOf(window);
- browserWindows.splice(index, 1);
- });
-});
-
-if (process.env.NODE_ENV !== 'production') {
- const watcher = chokidar.watch(__dirname, { ignored: [/node_modules|[/\\]\./] });
-
- watcher.on('change', () => {
- browserWindows.forEach(window => {
- window.webContents.reloadIgnoringCache();
- });
- });
-}
-```
-
-[HMR]: https://webpack.js.org/concepts/hot-module-replacement/
-
-[electron-reload]: https://www.npmjs.com/package/electron-reload
-
-[electron-webpack]: https://www.npmjs.com/package/electron-webpack
-
-[nodemon]: https://www.npmjs.com/package/nodemon
-
-[проблема]: https://github.com/yan-foto/electron-reload/issues/66