看样子,你应该是编辑器自动保存导致electron
更新的,你可以尝试将你的编辑器的自动保存功能关闭, 如果你一定要改程序的话
// .electron-vue/dev-run.js 80行左右
function startMain () {
return new Promise((resolve, reject) => {
mainConfig.entry.main = [path.join(__dirname, '../src/main/index.dev.js')].concat(mainConfig.entry.main)
const compiler = webpack(mainConfig)
compiler.plugin('watch-run', (compilation, done) => {
logStats('Main', chalk.white.bold('compiling...'))
hotMiddleware.publish({ action: 'compiling' })
done()
})
compiler.watch({}, (err, stats) => {
if (err) {
console.log(err)
return
}
logStats('Main', stats)
if (electronProcess && electronProcess.kill) {
manualRestart = true
process.kill(electronProcess.pid) // 代码发生变化后,杀死electron进程
electronProcess = null
startElectron() // 重新生成一个新的进程
setTimeout(() => {
manualRestart = false
}, 5000)
}
resolve()
})
})
}
你可以将process.kill(electronProcess.pid)
和startElectron()
方法换为在方法compiler.watch
外通过监听ctrl+s
或者通过主进程和渲染进程通信,决定你什么时候来刷新主进程,思路就是这么一个思路,你先自己尝试下,有问题可以继续问,如果觉得答案不错,请采纳
================= 分割线 ==================
你可以通过globalShortcut来监控全局的快捷键,通过ctrl+s
来保存,但是这么做的话有个缺陷,你高频的ctrl+s
(可能只有我喜欢连续点击ctrl+s
),会导致部分electron
进程杀不死,从而占用大量内存导致系统卡顿,所以你要密切的关注任务管理器
关于杀进程这个,我的处理是
const { exec } = require("child_process");
exec("taskkill /f /im electron.exe", (err) => {
if (!err) startElectron();
})
点击查看
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…