|
@@ -0,0 +1,85 @@
|
|
|
+const webpack = require("webpack");
|
|
|
+const { resolve } = require("path");
|
|
|
+const ora = require("ora");
|
|
|
+const { spawn } = require("child_process");
|
|
|
+const rm = require("rimraf");
|
|
|
+const chalk = require("chalk");
|
|
|
+const webpackConfig = require("./webpack.config.main.js");
|
|
|
+const electron = require("electron");
|
|
|
+const spinner = ora("building development electron...");
|
|
|
+spinner.start();
|
|
|
+let electronProcess = null;
|
|
|
+let manualRestart = false;
|
|
|
+
|
|
|
+const startMain = () => {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ rm("./dist/main.js", (removeErr) => {
|
|
|
+ if (removeErr) {
|
|
|
+ throw removeErr;
|
|
|
+ }
|
|
|
+ webpackConfig.mode = "development";
|
|
|
+ const compiler = webpack(webpackConfig);
|
|
|
+ compiler.watch({}, (err, stats) => {
|
|
|
+ if (err) throw err;
|
|
|
+ spinner.stop();
|
|
|
+ process.stdout.write(
|
|
|
+ stats.toString({
|
|
|
+ colors: true,
|
|
|
+ modules: false,
|
|
|
+ children: false,
|
|
|
+ chunks: false,
|
|
|
+ chunkModules: false,
|
|
|
+ }) + "\n\n"
|
|
|
+ );
|
|
|
+
|
|
|
+ if (stats.hasErrors()) {
|
|
|
+ console.log(chalk.red("Build failed with errors.\n"));
|
|
|
+ process.exit(1);
|
|
|
+ }
|
|
|
+ if (electronProcess && electronProcess.kill) {
|
|
|
+ manualRestart = true;
|
|
|
+ process.kill(electronProcess.pid);
|
|
|
+ electronProcess = null;
|
|
|
+ startElectron();
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ manualRestart = false;
|
|
|
+ }, 5000);
|
|
|
+ }
|
|
|
+ resolve();
|
|
|
+ console.log(
|
|
|
+ chalk.cyan(
|
|
|
+ `Build complete development in ${
|
|
|
+ stats.endTime - stats.startTime
|
|
|
+ }ms.\n`
|
|
|
+ )
|
|
|
+ );
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const startElectron = () => {
|
|
|
+ var args = ["--inspect=5858", resolve(__dirname, "../dist/main.js")];
|
|
|
+ electronProcess = spawn(electron, args);
|
|
|
+
|
|
|
+ electronProcess.stdout.on("data", (data) => {
|
|
|
+ console.log(chalk.blue(data.toString()));
|
|
|
+ });
|
|
|
+ electronProcess.stderr.on("data", (data) => {
|
|
|
+ console.log(chalk.blue(data.toString()));
|
|
|
+ });
|
|
|
+
|
|
|
+ electronProcess.on("close", () => {
|
|
|
+ if (!manualRestart) process.exit();
|
|
|
+ });
|
|
|
+};
|
|
|
+async function init() {
|
|
|
+ try {
|
|
|
+ await startMain();
|
|
|
+ await startElectron();
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ }
|
|
|
+}
|
|
|
+init();
|