UNPKG

1.59 kBJavaScriptView Raw
1const started = new Date()
2
3const bus = require('./modules/bus.js')
4const { log, logv, COLORS } = require('./utils/utils.js')
5
6module.exports = async function main(mode, entry, options) {
7
8 const version = require('../package.json').version
9 global.options = options
10 if (options.v) { console.log('version ' + version); process.exit() }
11
12 if (mode === 'init') {
13 await require(`./modes/init.js`)(entry)
14 process.exit(0)
15 }
16
17
18 log(`${COLORS.GREEN}WEBO ${version} started`)
19
20 bus.init()
21
22 const type = await require('./detect/project-type.js')(entry)
23
24 if (!type) { console.log(`Unable to detect project type. Your entry must be either a directory or an express.js entry.`); process.exit(1) }
25
26
27 const parserOptions = require('./parser-options.js')(mode, options)
28 if (mode === 'dev' && parserOptions.hash) { log(`_RED_Cannot use hash on dev mode.`); process.exit(1) }
29
30 const { srcRoot, staticRoots, serverRoot } = await require('./detect/roots.js')(mode, type, entry)
31 Object.assign(options, { entry, serverRoot })
32 logv(JSON.stringify({ options, parserOptions }))
33
34 bus.setGlobals(mode, srcRoot, options, parserOptions)
35
36 await require(`./modes/${mode}.js`)({ type, entry, srcRoot, staticRoots, serverRoot, parserOptions })
37
38
39 log(`${COLORS.GREEN}WEBO ${ mode === 'dev' ? 'loaded' : mode + ' completed' } at`, (new Date().getTime() - started.getTime()) / 1000 + 's')
40 if (mode !== 'dev') process.exit(0)
41
42}
43
44
45process.on('unhandledRejection', (r, p) => p.catch(o => { log('_RED_', o.stack); process.exit(1) }))