mirror of
https://github.com/earthjasonlin/zzz-signal-search-export.git
synced 2024-11-22 21:30:22 +08:00
97 lines
2.8 KiB
JavaScript
97 lines
2.8 KiB
JavaScript
|
'use strict'
|
||
|
process.env.NODE_ENV = 'production'
|
||
|
|
||
|
const { say } = require('cfonts')
|
||
|
const { sync } = require('del')
|
||
|
|
||
|
const chalk = require('chalk')
|
||
|
const rollup = require("rollup")
|
||
|
const { build } = require('vite')
|
||
|
const Multispinner = require('multispinner')
|
||
|
|
||
|
const mainOptions = require('./rollup.main.config');
|
||
|
const rendererOptions = require('./vite.config')
|
||
|
const opt = mainOptions(process.env.NODE_ENV);
|
||
|
|
||
|
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 === 'web') web()
|
||
|
else unionBuild()
|
||
|
|
||
|
function clean() {
|
||
|
sync(['dist/electron/main/*', 'dist/electron/renderer/*', 'dist/web/*', 'build/*', '!build/icons', '!build/lib', '!build/lib/electron-build.*', '!build/icons/icon.*'])
|
||
|
console.log(`\n${doneLog}clear done`)
|
||
|
if (process.env.BUILD_TARGET === 'onlyClean') process.exit()
|
||
|
}
|
||
|
|
||
|
function unionBuild() {
|
||
|
greeting()
|
||
|
if (process.env.BUILD_TARGET === 'clean' || process.env.BUILD_TARGET === 'onlyClean') clean()
|
||
|
|
||
|
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()
|
||
|
})
|
||
|
|
||
|
rollup.rollup(opt)
|
||
|
.then(build => {
|
||
|
results += `${doneLog}MainProcess build success` + '\n\n'
|
||
|
build.write(opt.output).then(() => {
|
||
|
m.success('main')
|
||
|
})
|
||
|
})
|
||
|
.catch(error => {
|
||
|
m.error('main')
|
||
|
console.log(`\n ${errorLog}failed to build main process`)
|
||
|
console.error(`\n${error}\n`)
|
||
|
process.exit(1)
|
||
|
});
|
||
|
|
||
|
build(rendererOptions).then(res => {
|
||
|
results += `${doneLog}RendererProcess build success` + '\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 web() {
|
||
|
sync(['dist/web/*', '!.gitkeep'])
|
||
|
build(rendererOptions).then(res => {
|
||
|
console.log(`${doneLog}RendererProcess build success`)
|
||
|
process.exit()
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function greeting() {
|
||
|
const cols = process.stdout.columns
|
||
|
let text = ''
|
||
|
|
||
|
if (cols > 85) text = `let's-build`
|
||
|
else if (cols > 60) text = `let's-|build`
|
||
|
else text = false
|
||
|
|
||
|
if (text && !isCI) {
|
||
|
say(text, {
|
||
|
colors: ['yellow'],
|
||
|
font: 'simple3d',
|
||
|
space: false
|
||
|
})
|
||
|
} else console.log(chalk.yellow.bold(`\n let's-build`))
|
||
|
console.log()
|
||
|
}
|