forked from quasarframework/quasar
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdev-server-regular.js
More file actions
53 lines (40 loc) · 1.32 KB
/
dev-server-regular.js
File metadata and controls
53 lines (40 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const webpack = require('webpack')
const WebpackDevServer = require('webpack-dev-server')
const openBrowser = require('./helpers/open-browser')
let openedBrowser = false
module.exports = class DevServer {
constructor (quasarConfFile) {
this.quasarConfFile = quasarConfFile
this.server = null
}
listen () {
const cfg = this.quasarConfFile.quasarConf
const webpackConf = this.quasarConfFile.webpackConf
return new Promise(resolve => {
const compiler = webpack(webpackConf.renderer)
compiler.hooks.done.tap('done-compiling', stats => {
if (this.__started === true) { return }
// start dev server if there are no errors
if (stats.hasErrors() === true) {
return
}
this.__started = true
resolve()
if (openedBrowser === false) {
openedBrowser = true
if (cfg.__devServer.open && ['spa', 'pwa'].includes(cfg.ctx.modeName)) {
openBrowser({ url: cfg.build.APP_URL, opts: cfg.__devServer.openOptions })
}
}
})
// start building & launch server
this.server = new WebpackDevServer(cfg.devServer, compiler)
this.server.start()
})
}
stop () {
return this.server !== null
? this.server.stop().finally(() => { this.server = null })
: Promise.resolve()
}
}