Initial clean project import
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
const fs = require("node:fs");
|
||||
const path = require("node:path");
|
||||
const { spawn, spawnSync } = require("node:child_process");
|
||||
const waitOn = require("wait-on");
|
||||
|
||||
const projectRoot = path.resolve(__dirname, "..");
|
||||
const serverUrl = process.env.VITE_DEV_SERVER_URL || "http://127.0.0.1:3354";
|
||||
const mainBundle = path.join(projectRoot, "dist-electron", "main", "index.js");
|
||||
const preloadBundle = path.join(projectRoot, "dist-electron", "preload", "index.js");
|
||||
|
||||
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
|
||||
|
||||
async function waitForSyntaxReady(filePath, label) {
|
||||
let lastSize = -1;
|
||||
|
||||
for (let attempt = 0; attempt < 240; attempt++) {
|
||||
if (fs.existsSync(filePath)) {
|
||||
const stat = fs.statSync(filePath);
|
||||
if (stat.size > 0 && stat.size === lastSize) {
|
||||
const check = spawnSync(process.execPath, ["--check", filePath], {
|
||||
stdio: "pipe",
|
||||
encoding: "utf8",
|
||||
});
|
||||
if (check.status === 0) {
|
||||
return;
|
||||
}
|
||||
process.stdout.write(
|
||||
`[dev-electron] waiting for valid ${label} bundle: ${check.stderr || check.stdout}\n`
|
||||
);
|
||||
}
|
||||
lastSize = stat.size;
|
||||
}
|
||||
|
||||
await sleep(250);
|
||||
}
|
||||
|
||||
throw new Error(`[dev-electron] timed out waiting for ${label} bundle: ${filePath}`);
|
||||
}
|
||||
|
||||
async function main() {
|
||||
await waitOn({
|
||||
resources: [serverUrl],
|
||||
timeout: 120000,
|
||||
validateStatus: status => status >= 200 && status < 400,
|
||||
});
|
||||
|
||||
await waitForSyntaxReady(mainBundle, "main");
|
||||
await waitForSyntaxReady(preloadBundle, "preload");
|
||||
|
||||
const electronBinary = require("electron");
|
||||
const child = spawn(electronBinary, ["."], {
|
||||
cwd: projectRoot,
|
||||
stdio: "inherit",
|
||||
env: process.env,
|
||||
});
|
||||
|
||||
child.on("exit", code => {
|
||||
process.exit(code ?? 0);
|
||||
});
|
||||
}
|
||||
|
||||
main().catch(error => {
|
||||
console.error("[dev-electron] failed to start Electron");
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user