Files
mir-godot/desktop/tools/script/watch.mjs

53 lines
1.5 KiB
JavaScript
Raw Normal View History

2024-08-06 18:30:21 +08:00
import {spawn} from "child_process";
import {build, createServer} from "vite";
import electron from "electron";
function watchMain(server) {
const address = server.httpServer.address();
const env = Object.assign(process.env, {
VITE_DEV_SERVER_HOST: address.address,
VITE_DEV_SERVER_PORT: address.port,
});
return build({
configFile: "tools/script/main/vite.config.ts",
mode: "development",
plugins: [{
name: "electron-main-watcher",
writeBundle(command, options) {
if (process.electronApp) {
process.electronApp.removeAllListeners()
process.electronApp.kill()
}
process.electronApp = spawn(electron, [".", "--no-sandbox"], {stdio: "inherit", env})
process.electronApp.once("exit", process.exit)
},
}],
build: {
watch: {},
},
})
}
function watchPreload(server) {
return build({
configFile: "tools/script/preload/vite.config.ts",
mode: "development",
plugins: [{
name: "electron-preload-watcher",
writeBundle() {
server.ws.send({type: "full-reload"})
}
}],
build: {
watch: {},
},
})
}
const server = await createServer({configFile: "template/vite.config.ts"});
await server.listen();
await watchPreload(server);
await watchMain(server);