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

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()