1 |
|
2 | const detect = require('detect-port')
|
3 |
|
4 |
|
5 | const serve = require('./server')
|
6 | const listening = require('./listening')
|
7 | const getModule = require('./module')
|
8 |
|
9 | module.exports = async (file, flags, module = getModule(file)) => {
|
10 | const server = serve(module)
|
11 |
|
12 | let port = flags.port
|
13 | let host = flags.host
|
14 |
|
15 | const open = await detect(port)
|
16 | let inUse = open !== port
|
17 |
|
18 | if (inUse) {
|
19 | port = open
|
20 |
|
21 | inUse = {
|
22 | old: flags.port,
|
23 | open
|
24 | }
|
25 | }
|
26 |
|
27 | if (host === '0.0.0.0') {
|
28 | host = null
|
29 | }
|
30 |
|
31 | server.listen(port, host, err => {
|
32 | if (err) {
|
33 | console.error('micro:', err.stack)
|
34 | process.exit(1)
|
35 | }
|
36 |
|
37 | return listening(server, inUse, flags.silent)
|
38 | })
|
39 | }
|