2016-11-09 22:59:41 +00:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
2016-11-10 14:24:22 +00:00
|
|
|
// Show logs
|
|
|
|
process.env.DEBUG = 'nuxt:*'
|
|
|
|
|
2016-11-16 17:41:09 +00:00
|
|
|
const _ = require('lodash')
|
|
|
|
const debug = require('debug')('nuxt:build')
|
2016-11-09 22:59:41 +00:00
|
|
|
const fs = require('fs')
|
|
|
|
const Nuxt = require('../')
|
|
|
|
const Server = require('../lib/server')
|
2016-11-16 17:41:09 +00:00
|
|
|
const chokidar = require('chokidar')
|
2016-11-09 22:59:41 +00:00
|
|
|
const { resolve } = require('path')
|
|
|
|
|
|
|
|
const rootDir = resolve(process.argv.slice(2)[0] || '.')
|
|
|
|
const nuxtConfigFile = resolve(rootDir, 'nuxt.config.js')
|
|
|
|
let options = {}
|
|
|
|
if (fs.existsSync(nuxtConfigFile)) {
|
|
|
|
options = require(nuxtConfigFile)
|
|
|
|
}
|
|
|
|
if (typeof options.rootDir !== 'string') {
|
|
|
|
options.rootDir = rootDir
|
|
|
|
}
|
|
|
|
|
2016-11-10 01:19:47 +00:00
|
|
|
options.dev = true // Add hot reloading and watching changes
|
|
|
|
|
2016-11-09 22:59:41 +00:00
|
|
|
new Nuxt(options)
|
|
|
|
.then((nuxt) => {
|
2016-11-16 17:41:09 +00:00
|
|
|
const server = new Server(nuxt)
|
2016-11-09 22:59:41 +00:00
|
|
|
.listen(process.env.PORT, process.env.HOST)
|
2016-11-16 17:41:09 +00:00
|
|
|
listenOnConfigChanges(nuxt, server)
|
2016-11-09 22:59:41 +00:00
|
|
|
})
|
|
|
|
.catch((err) => {
|
|
|
|
console.error(err)
|
2016-11-10 01:19:47 +00:00
|
|
|
process.exit(1)
|
2016-11-09 22:59:41 +00:00
|
|
|
})
|
2016-11-16 17:41:09 +00:00
|
|
|
|
|
|
|
function listenOnConfigChanges (nuxt, server) {
|
|
|
|
// Listen on nuxt.config.js changes
|
|
|
|
const build = _.debounce(() => {
|
|
|
|
debug('[nuxt.config.js] changed, rebuilding the app...')
|
|
|
|
delete require.cache[nuxtConfigFile]
|
|
|
|
let options = {}
|
|
|
|
if (fs.existsSync(nuxtConfigFile)) {
|
|
|
|
options = require(nuxtConfigFile)
|
|
|
|
}
|
|
|
|
options.rootDir = rootDir
|
|
|
|
nuxt.close()
|
|
|
|
.then(() => {
|
|
|
|
return new Nuxt(options)
|
|
|
|
})
|
|
|
|
.then((nuxt) => {
|
|
|
|
server.nuxt = nuxt
|
|
|
|
})
|
|
|
|
.catch((error) => {
|
|
|
|
console.error('Error while rebuild the app:', error)
|
|
|
|
process.exit(1)
|
|
|
|
})
|
|
|
|
}, 200)
|
|
|
|
const nuxtConfigFile = resolve(rootDir, 'nuxt.config.js')
|
|
|
|
chokidar.watch(nuxtConfigFile, { ignoreInitial: true })
|
|
|
|
.on('all', build)
|
|
|
|
}
|