1 | const started = new Date()
|
2 |
|
3 | const bus = require('./modules/bus.js')
|
4 | const { log, logv, COLORS } = require('./utils/utils.js')
|
5 |
|
6 | module.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 |
|
45 | process.on('unhandledRejection', (r, p) => p.catch(o => { log('_RED_', o.stack); process.exit(1) }))
|