123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- '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 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.*']);
- 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');
- process.exit();
- });
- pack(mainConfig)
- .then(result => {
- results += result + '\n\n';
- m.success('main');
- })
- .catch(err => {
- m.error('main');
- process.exit(1);
- });
- pack(rendererConfig)
- .then(result => {
- results += result + '\n\n';
- m.success('renderer');
- })
- .catch(err => {
- m.error('renderer');
- 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);
- 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
- });
- }
- }
|