From 33439c61cbeb0713f83bdfe0e92d5e3a1422357f Mon Sep 17 00:00:00 2001
From: AkiraFukushima
Date: Sat, 23 May 2020 21:57:08 +0900
Subject: [PATCH] Fix hotcode reload for new html-webpack-plugin
---
.electron-vue/dev-runner.js | 68 +++++++++++++++++--------------------
1 file changed, 31 insertions(+), 37 deletions(-)
diff --git a/.electron-vue/dev-runner.js b/.electron-vue/dev-runner.js
index 672c11c4..0da8a738 100644
--- a/.electron-vue/dev-runner.js
+++ b/.electron-vue/dev-runner.js
@@ -16,19 +16,22 @@ let electronProcess = null
let manualRestart = false
let hotMiddleware
-function logStats (proc, data) {
+function logStats(proc, data) {
let log = ''
- log += chalk.yellow.bold(`┏ ${proc} Process ${new Array((19 - proc.length) + 1).join('-')}`)
+ log += chalk.yellow.bold(`┏ ${proc} Process ${new Array(19 - proc.length + 1).join('-')}`)
log += '\n\n'
if (typeof data === 'object') {
- data.toString({
- colors: true,
- chunks: false
- }).split(/\r?\n/).forEach(line => {
- log += ' ' + line + '\n'
- })
+ data
+ .toString({
+ colors: true,
+ chunks: false
+ })
+ .split(/\r?\n/)
+ .forEach(line => {
+ log += ' ' + line + '\n'
+ })
} else {
log += ` ${data}\n`
}
@@ -38,7 +41,7 @@ function logStats (proc, data) {
console.log(log)
}
-function startRenderer () {
+function startRenderer() {
return new Promise((resolve, reject) => {
rendererConfig.entry.renderer = [path.join(__dirname, 'dev-client')].concat(rendererConfig.entry.renderer)
rendererConfig.mode = 'development'
@@ -49,7 +52,8 @@ function startRenderer () {
})
compiler.hooks.compilation.tap('compilation', compilation => {
- compilation.hooks.htmlWebpackPluginAfterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => {
+ const HtmlWebpackPlugin = require('html-webpack-plugin')
+ HtmlWebpackPlugin.getHooks(compilation).afterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => {
hotMiddleware.publish({ action: 'reload' })
cb()
})
@@ -59,25 +63,22 @@ function startRenderer () {
logStats('Renderer', stats)
})
- const server = new WebpackDevServer(
- compiler,
- {
- contentBase: path.join(__dirname, '../'),
- quiet: true,
- before (app, ctx) {
- app.use(hotMiddleware)
- ctx.middleware.waitUntilValid(() => {
- resolve()
- })
- }
+ const server = new WebpackDevServer(compiler, {
+ contentBase: path.join(__dirname, '../'),
+ quiet: true,
+ before(app, ctx) {
+ app.use(hotMiddleware)
+ ctx.middleware.waitUntilValid(() => {
+ resolve()
+ })
}
- )
+ })
server.listen(9080)
})
}
-function startMain () {
+function startMain() {
return new Promise((resolve, reject) => {
mainConfig.entry.main = [path.join(__dirname, '../src/main/index.dev.ts')].concat(mainConfig.entry.main)
mainConfig.mode = 'development'
@@ -113,7 +114,7 @@ function startMain () {
})
}
-function startElectron () {
+function startElectron() {
electronProcess = spawn(electron, ['--inspect=5858', path.join(__dirname, '../dist/electron/main.js')])
electronProcess.stdout.on('data', data => {
@@ -127,11 +128,8 @@ function startElectron () {
if (!manualRestart) process.exit()
})
}
-function startElectron () {
- var args = [
- '--inspect=5858',
- path.join(__dirname, '../dist/electron/main.js')
- ]
+function startElectron() {
+ var args = ['--inspect=5858', path.join(__dirname, '../dist/electron/main.js')]
// detect yarn or npm and process commandline args accordingly
if (process.env.npm_execpath.endsWith('yarn.js')) {
@@ -154,7 +152,7 @@ function startElectron () {
})
}
-function electronLog (data, color) {
+function electronLog(data, color) {
let log = ''
data = data.toString().split(/\r?\n/)
data.forEach(line => {
@@ -162,16 +160,12 @@ function electronLog (data, color) {
})
if (/[0-9A-z]+/.test(log)) {
console.log(
- chalk[color].bold('┏ Electron -------------------') +
- '\n\n' +
- log +
- chalk[color].bold('┗ ----------------------------') +
- '\n'
+ chalk[color].bold('┏ Electron -------------------') + '\n\n' + log + chalk[color].bold('┗ ----------------------------') + '\n'
)
}
}
-function greeting () {
+function greeting() {
const cols = process.stdout.columns
let text = ''
@@ -189,7 +183,7 @@ function greeting () {
console.log(chalk.blue(' getting ready...') + '\n')
}
-function init () {
+function init() {
greeting()
Promise.all([startRenderer(), startMain()])