142 lines
3.1 KiB
JavaScript
142 lines
3.1 KiB
JavaScript
"use strict";
|
|
|
|
process.env.NODE_ENV = "production";
|
|
|
|
const { say } = require("cfonts");
|
|
const chalk = require("chalk");
|
|
const del = require("del");
|
|
const { spawn } = require("child_process");
|
|
const webpack = require("webpack");
|
|
const Multispinner = require("multispinner");
|
|
const { mains } = require("./setVersion");
|
|
mains();
|
|
|
|
const mainConfig = require("./webpack.main.config");
|
|
const rendererConfig = require("./webpack.renderer.config");
|
|
const webConfig = require("./webpack.web.config");
|
|
|
|
const doneLog = chalk.bgGreen.white(" DONE ") + " ";
|
|
const errorLog = chalk.bgRed.white(" ERROR ") + " ";
|
|
const okayLog = chalk.bgBlue.white(" OKAY ") + " ";
|
|
const isCI = process.env.CI || false;
|
|
|
|
if (process.env.BUILD_TARGET === "clean") clean();
|
|
else if (process.env.BUILD_TARGET === "web") web();
|
|
else build();
|
|
|
|
function clean() {
|
|
del.sync(["build/*", "!build/icons", "!build/icons/icon.*"]);
|
|
console.log(`\n${doneLog}\n`);
|
|
process.exit();
|
|
}
|
|
|
|
function build() {
|
|
greeting();
|
|
|
|
del.sync(["dist/electron/*", "!.gitkeep"]);
|
|
|
|
const tasks = ["main", "renderer"];
|
|
const m = new Multispinner(tasks, {
|
|
preText: "building",
|
|
postText: "process"
|
|
});
|
|
|
|
let results = "";
|
|
|
|
m.on("success", () => {
|
|
process.stdout.write("\x1B[2J\x1B[0f");
|
|
console.log(`\n\n${results}`);
|
|
console.log(
|
|
`${okayLog}take it away ${chalk.yellow("`electron-builder`")}\n`
|
|
);
|
|
process.exit();
|
|
});
|
|
|
|
pack(mainConfig)
|
|
.then(result => {
|
|
results += result + "\n\n";
|
|
m.success("main");
|
|
})
|
|
.catch(err => {
|
|
m.error("main");
|
|
console.log(`\n ${errorLog}failed to build main process`);
|
|
console.error(`\n${err}\n`);
|
|
process.exit(1);
|
|
});
|
|
|
|
pack(rendererConfig)
|
|
.then(result => {
|
|
results += result + "\n\n";
|
|
m.success("renderer");
|
|
})
|
|
.catch(err => {
|
|
m.error("renderer");
|
|
console.log(`\n ${errorLog}failed to build renderer process`);
|
|
console.error(`\n${err}\n`);
|
|
process.exit(1);
|
|
});
|
|
}
|
|
|
|
function pack(config) {
|
|
return new Promise((resolve, reject) => {
|
|
webpack(config, (err, stats) => {
|
|
if (err) reject(err.stack || err);
|
|
else if (stats.hasErrors()) {
|
|
let err = "";
|
|
|
|
stats
|
|
.toString({
|
|
chunks: false,
|
|
colors: true
|
|
})
|
|
.split(/\r?\n/)
|
|
.forEach(line => {
|
|
err += ` ${line}\n`;
|
|
});
|
|
|
|
reject(err);
|
|
} else {
|
|
resolve(
|
|
stats.toString({
|
|
chunks: false,
|
|
colors: true
|
|
})
|
|
);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
function web() {
|
|
del.sync(["dist/web/*", "!.gitkeep"]);
|
|
webpack(webConfig, (err, stats) => {
|
|
if (err || stats.hasErrors()) console.log(err);
|
|
|
|
console.log(
|
|
stats.toString({
|
|
chunks: false,
|
|
colors: true
|
|
})
|
|
);
|
|
|
|
process.exit();
|
|
});
|
|
}
|
|
|
|
function greeting() {
|
|
const cols = process.stdout.columns;
|
|
let text = "";
|
|
|
|
if (cols > 85) text = "lets-build";
|
|
else if (cols > 60) text = "lets-|build";
|
|
else text = false;
|
|
|
|
if (text && !isCI) {
|
|
say(text, {
|
|
colors: ["yellow"],
|
|
font: "simple3d",
|
|
space: false
|
|
});
|
|
} else console.log(chalk.yellow.bold("\n lets-build"));
|
|
}
|