/*
|
|
** Nuxt
|
|
*/
|
|
const http = require('http')
|
|
const { Nuxt, Builder } = require('nuxt')
|
|
let config = require('./nuxt.config.js')
|
|
config.rootDir = __dirname // for electron-builder
|
|
// Init Nuxt.js
|
|
const nuxt = new Nuxt(config)
|
|
const builder = new Builder(nuxt)
|
|
const server = http.createServer(nuxt.render)
|
|
// Build only in dev mode
|
|
if (config.dev) {
|
|
builder.build().catch(err => {
|
|
console.error(err) // eslint-disable-line no-console
|
|
process.exit(1)
|
|
})
|
|
}
|
|
// Listen the server
|
|
server.listen()
|
|
const _NUXT_URL_ = `http://localhost:${server.address().port}`
|
|
console.log(`Nuxt working on ${_NUXT_URL_}`)
|
|
|
|
/*
|
|
** Electron
|
|
*/
|
|
let win = null // Current window
|
|
const electron = require('electron')
|
|
const path = require('path')
|
|
const app = electron.app
|
|
const newWin = () => {
|
|
win = new electron.BrowserWindow({
|
|
icon: path.join(__dirname, 'static/icon.png'),
|
|
center: true,
|
|
width: 1024,
|
|
height: 565,
|
|
minWidth: 1024,
|
|
minHeight: 565,
|
|
frame: false
|
|
})
|
|
win.on('closed', () => win = null)
|
|
if (config.dev) {
|
|
// Install vue dev tool and open chrome dev tools
|
|
const { default: installExtension, VUEJS_DEVTOOLS } = require('electron-devtools-installer')
|
|
installExtension(VUEJS_DEVTOOLS.id).then(name => {
|
|
console.log(`Added Extension: ${name}`)
|
|
win.webContents.openDevTools({ detach: true })
|
|
}).catch(err => console.log('An error occurred: ', err))
|
|
// Wait for nuxt to build
|
|
nuxt.hook('build:done', () => {
|
|
win.loadURL(_NUXT_URL_)
|
|
})
|
|
} else { return win.loadURL(_NUXT_URL_) }
|
|
}
|
|
app.on('ready', newWin)
|
|
app.on('window-all-closed', () => app.quit())
|
|
app.on('activate', () => win === null && newWin())
|