You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.6 KiB
114 lines
2.6 KiB
const chalk = require('chalk')
|
|
const electron = require('electron')
|
|
const path = require('path')
|
|
const { say } = require('cfonts')
|
|
const { spawn } = require('child_process')
|
|
const webpack = require('webpack')
|
|
// const WebpackDevServer = require('webpack-dev-server')
|
|
// const webpackHotMiddleware = require('webpack-hot-middleware')
|
|
const mainConfig = require('./webpack.main.config')
|
|
// const rendererConfig = require('./webpack.renderer.config')
|
|
|
|
let electronProcess = null
|
|
let manualRestart = false
|
|
// let hotMiddleware
|
|
|
|
function logStats(proc, data) {
|
|
let log = ""
|
|
|
|
log += chalk.yellow.bold(`┏ ${proc} Process ${new Array(19 - proc.length + 1).join("-")}`)
|
|
log += "\n\n"
|
|
|
|
if (typeof data === "object") {
|
|
data
|
|
.toString({
|
|
colors: true,
|
|
chunks: false,
|
|
})
|
|
.split(/\r?\n/)
|
|
.forEach((line) => {
|
|
log += " " + line + "\n"
|
|
})
|
|
} else {
|
|
log += ` ${data}\n`
|
|
}
|
|
|
|
log += "\n" + chalk.yellow.bold(`┗ ${new Array(28 + 1).join("-")}`) + "\n"
|
|
|
|
console.log(log)
|
|
}
|
|
|
|
function buildMain () {
|
|
return new Promise((resolve, reject) => {
|
|
mainConfig.mode = 'production'
|
|
webpack(mainConfig, (err, stats) => {
|
|
if (err) {
|
|
logStats('Main', chalk.red.bold(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`
|
|
})
|
|
logStats('Main', chalk.red.bold(err))
|
|
reject(err)
|
|
}
|
|
else {
|
|
resolve(stats.toString({
|
|
chunks: false,
|
|
colors: true
|
|
}))
|
|
}
|
|
})
|
|
})
|
|
}
|
|
function startMain (callback) {
|
|
return new Promise((resolve, reject) => {
|
|
mainConfig.entry.main = [path.join(__dirname, '../../src/main/index.dev.ts')]//.concat(mainConfig.entry.main)
|
|
mainConfig.mode = 'development'
|
|
const compiler = webpack(mainConfig)
|
|
|
|
compiler.hooks.watchRun.tapAsync('watch-run', (compilation, done) => {
|
|
logStats('Main', chalk.white.bold('compiling...'))
|
|
// hotMiddleware.publish({ action: 'compiling' })
|
|
done()
|
|
})
|
|
|
|
compiler.watch({}, (err, stats) => {
|
|
if (err) {
|
|
logStats('Main', chalk.red.bold(err))
|
|
return
|
|
}
|
|
|
|
logStats('Main', stats)
|
|
|
|
callback && callback()
|
|
|
|
resolve()
|
|
})
|
|
})
|
|
}
|
|
module.exports = {
|
|
startMain,
|
|
buildMain,
|
|
}
|
|
|
|
|
|
// function init () {
|
|
// greeting()
|
|
// startMain()
|
|
// Promise.all([startRenderer(), startMain()])
|
|
// .then(() => {
|
|
// startElectron()
|
|
// })
|
|
// .catch(err => {
|
|
// console.error(err)
|
|
// })
|
|
// }
|
|
|
|
// init()
|