You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
53 lines
1.4 KiB
// @ts-nocheck
|
|
import * as chalk from "chalk"
|
|
import { devVite } from "./code/runVite"
|
|
import { devElectron } from "./code/runElectron"
|
|
|
|
import { ChildProcess } from "child_process"
|
|
import { watch } from "rollup"
|
|
import options from "./rollup.config"
|
|
|
|
const opts = options(process.env.NODE_ENV)
|
|
const TAG = "[build-main.ts]"
|
|
|
|
;(async () => {
|
|
let vitePorcess = await devVite()
|
|
console.log("[vite]", chalk.green(`vite ready.`))
|
|
const watcher = watch(opts)
|
|
let child: ChildProcess | null
|
|
let manualRestart = false
|
|
watcher.on("change", filename => {
|
|
const log = chalk.green(`change -- ${filename}`)
|
|
console.log(TAG, log)
|
|
})
|
|
watcher.on("event", async ev => {
|
|
if (ev.code === "END") {
|
|
if (child && child.kill) {
|
|
manualRestart = true
|
|
child.kill()
|
|
child = null
|
|
setTimeout(() => {
|
|
manualRestart = false
|
|
}, 5000)
|
|
}
|
|
try {
|
|
child = await devElectron()
|
|
console.log("[electron]", chalk.green(`electron ready.`))
|
|
child.on("close", () => {
|
|
if (!manualRestart) {
|
|
vitePorcess.kill()
|
|
child.kill()
|
|
process.exit()
|
|
}
|
|
})
|
|
} catch (ev) {
|
|
console.log(ev.error)
|
|
vitePorcess.kill()
|
|
child.kill()
|
|
process.exit()
|
|
}
|
|
} else if (ev.code === "ERROR") {
|
|
console.log(ev.error)
|
|
}
|
|
})
|
|
})()
|
|
|