import { ViteDevServer } from "vite"; export let devPlugin = () => { return { name: "dev-plugin", configureServer(server: ViteDevServer) { require("esbuild").buildSync({ entryPoints: ["./src/main/mainEntry.ts"], bundle: true, platform: "node", outfile: "./dist/mainEntry.js", external: ["electron", "pg", "tedious", "mysql", "mysql2", "oracledb", "pg-query-stream", "sqlite3"], }); // require("esbuild").buildSync({ // entryPoints: ["./src/main/preload.ts"], // bundle: true, // platform: "node", // outfile: "./dist/preload.js", // external: ["electron", "pg", "tedious", "mysql", "mysql2", "oracledb", "pg-query-stream", "sqlite3"], // }); if (!server.httpServer) throw new Error("server.httpServer is null check devPlugin.ts "); server.httpServer?.once("listening", () => { let { spawn } = require("child_process"); let addressInfo = server.httpServer?.address() as any; // console.log(server); // console.log(addressInfo); let httpAddress = `http://${addressInfo.address}:${addressInfo.port}`; let electronProcess = spawn(require("electron").toString(), ["./dist/mainEntry.js", httpAddress], { cwd: process.cwd(), stdio: "inherit", }); electronProcess.on("close", () => { server.close(); process.exit(); }); }); }, }; }; export let getReplacer = () => { let externalModels = ["os", "fs", "path", "events", "child_process", "crypto", "http", "buffer", "url", "better-sqlite3", "knex"]; let result = {}; for (let item of externalModels) { result[item] = () => ({ find: new RegExp(`^${item}$`), code: `const ${item} = require('${item}');export { ${item} as default }`, }); } result["electron"] = () => { let electronModules = ["clipboard", "ipcRenderer", "nativeImage", "shell", "webFrame"].join(","); return { find: new RegExp(`^electron$`), code: `const {${electronModules}} = require('electron');export {${electronModules}}`, }; }; return result; };