// @ts-nocheck import { main } from "../package.json" import { join } from "path" import * as electron from "electron" import * as dotenv from "dotenv" import * as ora from "ora" import * as chalk from "chalk" import * as minimist from "minimist" import { exec, spawn, ChildProcess } from "child_process" import { watch, rollup, OutputOptions } from "rollup" import { waitOn } from "./utils" import options from "./rollup.config" // 注入环境变量 dotenv.config({ path: join(__dirname, "../.env") }) // 解析命令行参数 const argv = minimist(process.argv.slice(2)) // rollup配置 const opts = options(argv.env) const TAG = "[build-main.ts]" // 加载图 const spinner = ora(`${TAG} Electron build...`) function buildVite() { return new Promise((resolve, reject) => { let viteProcess = spawn("node", [join(__dirname, "../node_modules/vite/bin/vite.js"), "build"], { stdio: "pipe", env: Object.assign(process.env, { NODE_ENV: argv.env }), }) if (viteProcess) { viteProcess.stdout.on("end", data => { console.log(`\n[vite build end]`) resolve(viteProcess) }) viteProcess.stderr.on("data", data => { console.error(`\n[vite build err]: ${data}`) reject() }) } else { reject() } }) } function tscCheck() { return new Promise((resolve, reject) => { let tscProcess = spawn("node", [join(__dirname, "../node_modules/typescript/bin/tsc")], { stdio: "pipe", env: Object.assign(process.env, { NODE_ENV: argv.env }), }) if (tscProcess) { tscProcess.stdout.on("end", data => { console.log(`[tsc check end]`) resolve(tscProcess) }) tscProcess.stderr.on("data", data => { console.error(`[tsc check err]: ${data}`) reject() }) } else { reject() } }) } async function buildMain() { try { const build = await rollup(opts) build.write(opts.output as OutputOptions) } catch (error) { console.log(`\n${TAG} ${chalk.red("构建报错")}\n`, error, "\n") } } function buildElectron() { return new Promise((resolve, reject) => { let tscProcess = spawn("node", [join(__dirname, "../node_modules/@electron-forge/cli/dist/electron-forge.js"), "make"], { stdio: "pipe", env: Object.assign(process.env, { NODE_ENV: argv.env }), }) if (tscProcess) { tscProcess.stdout.on("data", data => { console.log(`[electron build]: ${data}`) }) tscProcess.stdout.on("end", data => { console.log(`[electron build end]`) resolve(tscProcess) }) tscProcess.stderr.on("data", data => { console.error(`[electron build err]: ${data}`) reject() }) } else { reject() } }) } ;(async () => { await tscCheck() await buildVite() await buildMain() // await buildElectron() })()