动态端口,统一config

This commit is contained in:
gaoshuaixing
2020-11-13 12:09:55 +08:00
parent 84c7dad0f2
commit 9cae92d069
6 changed files with 161 additions and 63 deletions

105
main.js
View File

@@ -1,25 +1,20 @@
const {app, BrowserWindow, Menu, shell} = require('electron')
const path = require('path')
const getPort = require('get-port')
const eggLauncher = require('./electron/lanucher')
const setup = require('./electron/setup')
const config = require('./electron/config').get()
const electronConfig = require('./electron/config')
const storage = require('./electron/storage')
// Initialize
setup()
// return
//return
// 主窗口
// main window
global.MAIN_WINDOW = null
for (let i = 0; i < process.argv.length; i++) {
const tmpArgv = process.argv[i]
if (tmpArgv.indexOf('--env=') !== -1) {
config.egg.env = tmpArgv.substr(6)
}
}
if (process.mas) app.setName('electron-egg')
// Open url with the default browser
app.on('web-contents-created', (e, webContents) => {
webContents.on('new-window', (event, url) => {
event.preventDefault()
@@ -27,45 +22,11 @@ app.on('web-contents-created', (e, webContents) => {
});
});
async function createWindow () {
MAIN_WINDOW = new BrowserWindow(config.windowsOption)
// if (process.platform === 'linux') {
// windowOptions.icon = path.join(__dirname, '/assets/app-icon/png/512.png')
// }
if (config.egg.env === 'prod') {
//隐藏菜单
Menu.setApplicationMenu(null)
}
// loding页
MAIN_WINDOW.loadURL(path.join('file://', __dirname, '/app/public/loading.html'))
// egg服务
setTimeout(function(){
startServer(config.egg)
}, 100)
return MAIN_WINDOW
}
async function startServer (options) {
let startRes = null
options.port = await getPort({port: options.port})
ELog.info('config.egg', options)
startRes = await eggLauncher.start(options).then((res) => res, (err) => err)
ELog.info('startRes:', startRes)
if (startRes === 'success') {
let url = 'http://localhost:' + options.port
MAIN_WINDOW.loadURL(url)
return
}
app.relaunch()
}
async function initialize () {
// dynamic port
await storage.setDynamicPort();
app.whenReady().then(() => {
createWindow()
app.on('activate', function () {
@@ -83,4 +44,50 @@ async function initialize () {
})
}
async function createWindow () {
// argv
const eggConfig = electronConfig.get('egg')
for (let i = 0; i < process.argv.length; i++) {
const tmpArgv = process.argv[i]
if (tmpArgv.indexOf('--env=') !== -1) {
eggConfig.env = tmpArgv.substr(6)
}
}
MAIN_WINDOW = new BrowserWindow(electronConfig.get('windowsOption'))
// if (process.platform === 'linux') {
// windowOptions.icon = path.join(__dirname, '/assets/app-icon/png/512.png')
// }
if (eggConfig.env === 'prod') {
// hidden menu
Menu.setApplicationMenu(null)
}
// loding page
MAIN_WINDOW.loadURL(path.join('file://', __dirname, '/app/public/loading.html'))
// egg server
setTimeout(function(){
startServer(eggConfig)
}, 100)
return MAIN_WINDOW
}
async function startServer (options) {
let startRes = null
ELog.info('[main] [startServer] options', options)
startRes = await eggLauncher.start(options).then((res) => res, (err) => err)
ELog.info('startRes:', startRes)
if (startRes === 'success') {
let url = 'http://localhost:' + options.port
MAIN_WINDOW.loadURL(url)
return true
}
app.relaunch()
}
initialize()