初始化
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
"use strict";
|
||||
|
||||
process.env.NODE_ENV = "production";
|
||||
const Multispinner = require("multispinner");
|
||||
const { say } = require("cfonts");
|
||||
const chalk = require("chalk");
|
||||
const del = require("del");
|
||||
const { spawn } = require("child_process");
|
||||
const webpack = require("webpack");
|
||||
const fs = require("fs-extra");
|
||||
const Listr = require("listr");
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
async function build() {
|
||||
greeting();
|
||||
|
||||
del.sync(["dist/electron/*", "!.gitkeep"]);
|
||||
fs.copy("lib", "dist/electron/lib", { recursive: true }, () => {});
|
||||
// fs.copy("src/main/fingerprint", "dist/electron/fingerprint", { recursive: true }, () => {});
|
||||
const tasks = ["main", "renderer"];
|
||||
const m = new Multispinner(tasks, {
|
||||
preText: "building",
|
||||
postText: "process",
|
||||
});
|
||||
|
||||
let results = "";
|
||||
|
||||
const _tasks = new Listr(
|
||||
[
|
||||
{
|
||||
title: "building master process",
|
||||
task: async () => {
|
||||
await pack(mainConfig)
|
||||
.then((result) => {
|
||||
results += result + "\n\n";
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(`\n ${errorLog}failed to build main process`);
|
||||
console.error(`\n${err}\n`);
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "building renderer process",
|
||||
task: async () => {
|
||||
await pack(rendererConfig)
|
||||
.then((result) => {
|
||||
results += result + "\n\n";
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(`\n ${errorLog}failed to build renderer process`);
|
||||
console.error(`\n${err}\n`);
|
||||
});
|
||||
},
|
||||
},
|
||||
],
|
||||
{ concurrent: 2 }
|
||||
);
|
||||
|
||||
await _tasks
|
||||
.run()
|
||||
.then(() => {
|
||||
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();
|
||||
})
|
||||
.catch((err) => {
|
||||
process.exit(1);
|
||||
});
|
||||
}
|
||||
|
||||
function pack(config) {
|
||||
return new Promise((resolve, reject) => {
|
||||
config.mode = "production";
|
||||
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"]);
|
||||
webConfig.mode = "production";
|
||||
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"));
|
||||
console.log();
|
||||
}
|
||||
Reference in New Issue
Block a user