// @ts-nocheck const electron = require("electron") const execa = require("execa") const vite = require("vite") const path = require("path") const fs = require("fs") const os = require("os") const esbuild = require("esbuild") const { say } = require("cfonts") const { spawn } = require("child_process") const chalk = require("chalk") function getEnvScript () { let script = `process.env={...process.env};` script += `process.env.RES_DIR = require("path").join(require("path").dirname(process.execPath),"resources/resource/release")` return script } async function buildRender() { const subprocess = execa("vite",['-c','vite.config.ts']).stdout.pipe(process.stdout);; setTimeout(() => { subprocess.killed(); }, 1000); try { await subprocess; } catch (error) { console.log(subprocess.killed); // true console.log(error.isCanceled); // true } return let options = { root: path.join(__dirname, "../src/render"), enableEsbuild: true, minify: false, resolve:{ alias: [ { find: "@", replacement: path.resolve(__dirname, "src/render") }, { find: "@render", replacement: path.resolve(__dirname, "src/render") }, { find: "@main", replacement: path.resolve(__dirname, "src/main") }, { find: "@src", replacement: path.resolve(__dirname, "src/src") }, { find: "@root", replacement: __dirname }, ], }, optimizeDeps: { exclude: ["process"], }, } await vite.build(options) // let htmlPath = path.join(__dirname, "../dist/electron", "index.html") // let html = fs.readFileSync(htmlPath, { encoding: "utf8" }) // html = html.replace("
", ``) // fs.writeFileSync(htmlPath, html) } function buildMain() { let outfile = path.join(process.cwd(), "dist/electron/entry.js") let entryFilePath = path.join(process.cwd(), "src/main/index.js") esbuild.buildSync({ entryPoints: [entryFilePath], outfile, minify: false, bundle: true, platform: "node", sourcemap: false, external: ["electron"], }) let js = `${getEnvScript()}${os.EOL}${fs.readFileSync(outfile)}` fs.writeFileSync(outfile, 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")) { args = args.concat(process.argv.slice(3)) } else if (process.env.npm_execpath.endsWith("npm-cli.js")) { args = args.concat(process.argv.slice(2)) } // electronProcess = spawn(electron, args) // electronProcess.stdout.on("data", data => { // electronLog(data, "blue") // }) // electronProcess.stderr.on("data", data => { // electronLog(data, "red") // }) // electronProcess.on("close", () => { // if (!manualRestart) process.exit() // }) } function logStats(proc, data) { let log = "" 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" }) } else { log += ` ${data}\n` } log += "\n" + chalk.yellow.bold(`┗ ${new Array(28 + 1).join("-")}`) + "\n" console.log(log) } function electronLog(data, color) { let log = "" data = data.toString().split(/\r?\n/) data.forEach(line => { log += ` ${line}\n` }) if (/[0-9A-z]+/.test(log)) { console.log( chalk[color].bold("┏ Electron -------------------") + "\n\n" + log + chalk[color].bold("┗ ----------------------------") + "\n" ) } } function greeting() { const cols = process.stdout.columns let text = "" if (cols > 104) text = "electron-vue" else if (cols > 76) text = "electron-|vue" else text = '' if (text) { say(text, { colors: ["yellow"], font: "simple3d", space: false, }) } else console.log(chalk.yellow.bold("\n electron-vue")) console.log(chalk.blue(" getting ready...") + "\n") } function init() { greeting() // buildMain() buildRender() } init()