Danila
можно пример, где сделан hot-reload для main-процессов?
Danila
та же фигня и с hot-reload на node-js я еще не сталкивался
Vadim
Закрытая репа. Это возможно и это работает)
Vadim
И это удобно
Vadim
gulp(таск ранер) + webpack(сборка всякого) + electron-connect(reloader)
Vadim
Можно попробовать и без gulp
Danila
судя по всему, эта штука ребутит весь процесс
Vadim
Danila
с тем же вполне справляется nodemon
Danila
я неправильно прочитал, да. Поэтому и удивился
Vadim
nodemon умеет запускать пересборку?
Danila
пересборку чего?
Danila
у вас же Webpack занимается renderer’ом?
Vadim
Скриптов основного процесса
Danila
хм, а что там собирается?
Danila
typescript/babel?
Vadim
Ну у меня на TS всё
Vadim
Danila
это может и ts-node делать, тогда не нужно персобирать ничего
Vadim
Окей, тогда кейс:
Запустить Electron только когда пройдет сборка рендера, при возможном хотрелоаде рендера
Danila
before() {
if (process.env.START_HOT) {
const spawnOptions = getSpawnOptions();
console.log('Starting Main Process...');
spawn(spawnOptions.npm, spawnOptions.args, {
shell: true,
env: process.env,
stdio: 'inherit'
})
.on('close', code => process.exit(code))
.on('error', spawnError => console.error(spawnError));
}
}
Danila
в конфиге webpack
Vadim
👍
Danila
а там внутри уже nodemon, если нужно рестартить ноду
Vadim
Неплохо, есть над чем подумать
Danila
Не за что
Oleksii
Только это будет убивать процесс)
Дмитрий
electron-reloader умеет перезапускать, есть еще похожий пакет electron-reload оба вроде бы работают, но не доведены до совершенства
Vadim
electron-reloader:
Requires Electron 5 or later.
require('electron-reloader')(module);
вот за эти 2 строки мне он не нравиться
Vadim
electron-reload смотриться нормально
Danila
мне кажется, это всё и так умеет nodemon делать )
Vadim
Danila
причем с кучей настроек и прочими радостями
Danila
ну и стабильно, офкос
Vadim
Danila
я чет слез с него. Меня webpack устраивает полностью
Vadim
Они же разные задачи решают
Danila
ну вот что-то нет задач пока, для которых нужен task manager типа gulp’а
Vadim
Таск ранер можно использовать для сборки, а вот сборщик для тасок нельзя)
Danila
согласен
Nikolay
Здравствуйте! Использую cra + electron и пытаюсь подключить rxdb как бд для работы. при попытке подключить в production __dirname выводится неправильно и приложение крашится. Никто с таки не сталкивался?
в webpack:
target: electron-renderer
node.__dirname = false
Electron.js releases
v8.0.0-nightly.20190819
https://github.com/electron/electron/releases/tag/v8.0.0-nightly.20190819
v8.0.0-nightly.20190819
Vadim
Данил
Гайз. Как с работой на электроне в СНГ?
Lev
нормально
Lev
электрон это скорее придаток, чем основной инструмент)
rovnyart
rovnyart
app.getAppPath тоже хз как заставить работать в рендер-местах
rovnyart
Неояевидные какие то шороховатости после православных реактов с вебпаками
Lev
Lev
rovnyart
А зачем это в рендере оО
честно говоря, не знаю, я в электроне супер-новичок, пришел из "нормального" веба, где есть фронт и бэк (у меня и то и то на js), и может я что-то не так понял, но у меня main.js (то бишь main process) - это реально только вот эта вот стандартная бойлерплейт-херовина, которая загружает index.html. и все мои "серверные" (в кавычках) штуки - такие как подключение к бд, описание моделей sequelize, "апи-методы back2front" - все вот это получается у меня написано "на фронте" что ли, и даже собирается вебпаком🤔 могу предположить, что я что-то явно делаю не так, но отмечу, что по этому пути было пойти ооочень легко)
rovnyart
как-то в электрон-приложении я не очень могу разделить фронт и бэк, рендер и не рендер, по мне так все рендер, раз уж ты решил тут нам играть в приложение стэндалоун
Lev
Туда можно так же бек сунуть
Lev
Сервер на ноде
rovnyart
И что он будет сервить?
Lev
А что нужно делать то?)))
Lev
Работать с файловой системой например
rovnyart
у меня задача - приложение, которое может работать с бд на постгресе (получать оттуда данные) и с amqplib (отправлять сообщения в кролика)
rovnyart
мне не нужно, чтобы мне что-то сервило какие-либо апи, я думал электрон типа "все в одном" как раз для этого
Lev
Я электрон использую как обертку, есть фронт реакт сбилженный, а в электрон пихаю экспресс который эту реакт апку сервит и отвечает на её запросы
rovnyart
что ты можешь пользоваться грубо говоря нодой на фронте
Lev
Нет не можешь))
Lev
Электрон это тупо ноджс и браузер
rovnyart
так это написано на самой первой странице описания электрона)))
Lev
В удобной обертке и не более
Lev
Все что можно сделать с помощью браузера и ноды можно в электрон сделать))
rovnyart
ну вот я щас себе на фронте нарисовал и подключение к бд, и "апи-методы", и отправку сообщений в rabbitmq, все это в этом вашем "рендер процессе" - это типа вообще неправильно и зашквар?
rovnyart
какая тогда должна быть архитектура у моего приложения?
Lev
Причём тем же кодом) а электрон это открытие окон браузера
Lev
Ну как обычно)) бек и фронт и рест между ними)
rovnyart
опять там че-то с бэкенда передавать хер пойми какими апи-методами на "фронт"?
Lev
А как вы с фронта решили работать с пгскул?)
rovnyart
так вот и решил
rovnyart
import sequelize
Lev
С паролями в открытом виде?)
Lev
А он драйвер помоему не подцепит