【发布时间】:2020-01-22 16:52:08
【问题描述】:
我有以下脚本
const WebpackDevServer = require('webpack-dev-server')
const webpack = require('webpack')
const electroner = require('electroner')
const packageJson = require('../package')
const config = require('./webpack.config')
const options = {
port: 3000,
contentBase: './dist',
hot: true,
overlay: true,
after: function (app, server) {
const window = electroner(`${__dirname}/../${packageJson.main}`, {
'enable-transparent-visuals': true,
'disable-cpu': true
})
window.on('close', () => {
server.close()
})
},
stats: 'errors-only'
}
WebpackDevServer.addDevServerEntrypoints(config, options)
const compiler = webpack(config)
const server = new WebpackDevServer(compiler, options)
server.listen(3000, 'localhost', () => {
console.log('dev server listening on port 3000')
})
“config”变量包含/指向两个 webpack 配置(一个用于 main,另一个用于电子应用程序的渲染器脚本)。
我想要实现的是,我想只有在主脚本重新编译成功时才重新启动电子进程。
我已经阅读了一周关于钩子的文章,但我相信它们对实现上述目标没有帮助。
我正在寻找这样的解决方案:
compiler.on('compile', (stats) => {
if(stats.details === 'main.js'){
// logic to restart electron process here.
}
})
任何提示将不胜感激。
【问题讨论】:
-
我不久前应用了一个解决方案,但结果证明它破坏了 HMR 功能。