kopia lustrzana https://github.com/inkstitch/inkstitch
103 wiersze
3.1 KiB
JavaScript
103 wiersze
3.1 KiB
JavaScript
'use strict'
|
|
|
|
const loadEnv = require('../utils/loadEnv')
|
|
loadEnv()
|
|
loadEnv('development')
|
|
const chalk = require('chalk')
|
|
const webpack = require('webpack')
|
|
const WebpackDevServer = require('webpack-dev-server')
|
|
const { info } = require('../utils/logger')
|
|
const getLocalIP = require('../utils/getLocalIP')
|
|
const devWebpackConfig = require('../config/dev')
|
|
const devServerOptions = devWebpackConfig.devServer
|
|
const { spawn } = require('node:child_process')
|
|
const electron = require('electron')
|
|
const path = require('path')
|
|
const url = require('url')
|
|
const fs = require('fs');
|
|
|
|
let electronProcess = null
|
|
let manualRestart = false
|
|
// disable warnings in browser console
|
|
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'false'
|
|
|
|
const protocol = devServerOptions.https ? 'https' : 'http'
|
|
const host = devServerOptions.host || '0.0.0.0'
|
|
const port = devServerOptions.port || 8080
|
|
|
|
// older code that sets the url for the path I would assume
|
|
var parseArg = process.argv[2] || ""
|
|
var yarnArg = url.parse(parseArg)
|
|
|
|
function resetPort() {
|
|
let resetData = { "_comment1": "port should not be declared when commiting" }
|
|
fs.writeFileSync(path.join(__dirname, "../../src/lib/flaskserverport.json"), JSON.stringify(resetData), 'utf8')
|
|
console.log("Resetting the flaskport")
|
|
}
|
|
|
|
function startElectron(webpackport) {
|
|
var wbport = webpackport
|
|
// this sends url to proper position
|
|
process.argv.shift()
|
|
process.argv.shift()
|
|
// get URL from PrintPDF
|
|
// checks if url is http
|
|
if (yarnArg.protocol) {
|
|
var args = [
|
|
'--inspect=5858',
|
|
path.join(__dirname, '../../dist/electron/main.js')
|
|
].concat(process.argv)
|
|
} else {
|
|
var args = [
|
|
'--inspect=5858',
|
|
`http://0.0.0.0:${wbport}/#${process.argv}`
|
|
].concat(process.argv)
|
|
}
|
|
// detect yarn or npm and process commandline args accordingly
|
|
if (process.env.npm_execpath.endsWith('yarn.js')) {
|
|
args = args.concat(process.argv.slice(3))
|
|
} else if (process.env.npm_execpath.endsWith('npm-cli.js')) {
|
|
args = args.concat(process.argv.slice(2))
|
|
}
|
|
electronProcess = spawn(electron, args)
|
|
electronProcess.on('close', () => {
|
|
if (!manualRestart) {
|
|
process.exit()
|
|
} else {
|
|
process.kill(electronProcess.pid)
|
|
}
|
|
resetPort()
|
|
})
|
|
electronProcess.on('exit', () => {
|
|
resetPort()
|
|
})
|
|
}
|
|
|
|
info('Starting development server...')
|
|
const compiler = webpack(devWebpackConfig)
|
|
const server = new WebpackDevServer(devServerOptions, compiler)
|
|
|
|
compiler.hooks.done.tap('serve', (stats) => {
|
|
console.log()
|
|
console.log()
|
|
console.log(`App running at:`)
|
|
console.log(` - Local: ${chalk.cyan(`${protocol}://${host}:${port}`)}`)
|
|
console.log(` - Network: ${chalk.cyan(`${protocol}://${getLocalIP()}:${port}`)}`)
|
|
console.log()
|
|
|
|
// allows livereload for webpack devserver to work without multiple instances of electron
|
|
if (electronProcess) {
|
|
manualRestart = true
|
|
} else {
|
|
manualRestart = false
|
|
// starts nodejs electron commandline browser
|
|
startElectron(devServerOptions.port)
|
|
}
|
|
})
|
|
|
|
server.start(port, host, (err) => {
|
|
if (err) {
|
|
process.exit(0)
|
|
}
|
|
})
|