使用
chokidar.watch(mainFile).on('change', () => {
app.relaunch();
app.exit(0);
});
我可以让我的Electron应用程序在源更改时自动重新加载。但是,由于主进程被终止,我松开了调试所需的终端输出。有没有办法使用app.relaunch()
保留父进程的stdio
?
答案 0 :(得分:0)
免责声明:下面我解释一下我在2016年发现的不错的解决方法。不确定在2018年是否有更好的方法。
电子应用的重新加载分为两个部分:
我使用electron-reload仅在renderer
文件夹中监听更改:
require("electron-reload")(path.join(__dirname, "/renderer"));
通过Gulp脚本“手动”处理自动重新加载,如下所示:
let child = null;
let start = () => {
// Was already running? Kill it and restart.
if (child) child.kill();
let env = process.env;
env.NODE_ENV = "dev";
child = proc.spawn(electron, ["./main/main.js"], { env: env });
function print(data) {
let str = data.toString().trim();
if (str) gutil.log(str);
}
child.stdout.on("data", print);
child.stderr.on("data", print);
};
// Run (dev mode with watch and autoreload)
gulp.task("dev", ["watch"], () => {
start();
});
// Watch and move to dist on the fly.
// Hard reset if main process source changes.
gulp.task("watch", () => {
// If ./renderer/**/*.js changes, electron-reload will handle reload of renderer process only.
// If ./main/**/*.js changes, we kill the Electron process and start a new one.
gulp.watch("./main/**/*.js", start);
});
使用gulp run dev
运行应用程序将启动观察程序,并在文件更改时终止/重新启动整个应用程序。