mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-11 08:33:53 +00:00
Merge branch 'master' into pr/44
# Conflicts: # lib/build/index.js
This commit is contained in:
commit
b73675206a
@ -21,7 +21,9 @@ module.exports = {
|
||||
// allow async-await
|
||||
'generator-star-spacing': 0,
|
||||
// allow debugger during development
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
|
||||
// do not allow console.logs etc...
|
||||
'no-console': 2
|
||||
},
|
||||
globals: {}
|
||||
}
|
||||
|
@ -84,12 +84,13 @@ const options = {
|
||||
}
|
||||
|
||||
// Launch nuxt build with given options
|
||||
new Nuxt(options)
|
||||
.then((nuxt) => {
|
||||
let nuxt = new Nuxt(options)
|
||||
nuxt.build()
|
||||
.then(() => {
|
||||
// You can use nuxt.render(req, res) or nuxt.renderRoute(route, context)
|
||||
})
|
||||
.catch((error) {
|
||||
// If an error appended while building the project
|
||||
.catch((e) => {
|
||||
// An error appended during the build
|
||||
})
|
||||
```
|
||||
|
||||
|
@ -19,13 +19,13 @@ if (typeof options.rootDir !== 'string') {
|
||||
}
|
||||
options.dev = false // Create production build when calling `nuxt build`
|
||||
|
||||
console.log('[nuxt] Building...')
|
||||
console.log('[nuxt] Building...') // eslint-disable-line no-console
|
||||
const nuxt = new Nuxt(options)
|
||||
nuxt.build()
|
||||
.then(() => {
|
||||
console.log('[nuxt] Building done')
|
||||
console.log('[nuxt] Building done') // eslint-disable-line no-console
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(err)
|
||||
console.error(err) // eslint-disable-line no-console
|
||||
process.exit(1)
|
||||
})
|
||||
|
@ -19,13 +19,13 @@ if (typeof options.rootDir !== 'string') {
|
||||
}
|
||||
options.dev = false // Force production mode (no webpack middlewares called)
|
||||
|
||||
console.log('[nuxt] Generating...')
|
||||
console.log('[nuxt] Generating...') // eslint-disable-line no-console
|
||||
const nuxt = new Nuxt(options)
|
||||
nuxt.generate()
|
||||
.then(() => {
|
||||
console.log('[nuxt] Generate done')
|
||||
console.log('[nuxt] Generate done') // eslint-disable-line no-console
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(err)
|
||||
console.error(err) // eslint-disable-line no-console
|
||||
process.exit()
|
||||
})
|
||||
|
11
examples/auth-routes/nuxt.config.js
Normal file
11
examples/auth-routes/nuxt.config.js
Normal file
@ -0,0 +1,11 @@
|
||||
module.exports = {
|
||||
head: {
|
||||
title: 'Auth Routes',
|
||||
meta: [
|
||||
{ charset: 'utf-8' },
|
||||
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
||||
{ hid: 'description', content: 'Auth Routes example' }
|
||||
]
|
||||
},
|
||||
loading: { color: '#3B8070' }
|
||||
}
|
@ -31,15 +31,17 @@ app.post('/api/logout', function (req, res) {
|
||||
|
||||
// We instantiate Nuxt.js with the options
|
||||
const isProd = process.env.NODE_ENV === 'production'
|
||||
const nuxt = new Nuxt({ dev: !isProd })
|
||||
let config = require('./nuxt.config.js')
|
||||
config.dev = !isProd
|
||||
const nuxt = new Nuxt(config)
|
||||
// No build in production
|
||||
const promise = (isProd ? Promise.resolve() : nuxt.build())
|
||||
promise.then(() => {
|
||||
app.use(nuxt.render)
|
||||
app.listen(3000)
|
||||
console.log('Server is listening on http://localhost:3000')
|
||||
console.log('Server is listening on http://localhost:3000') // eslint-disable-line no-console
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(error)
|
||||
console.error(error) // eslint-disable-line no-console
|
||||
process.exit(1)
|
||||
})
|
||||
|
@ -282,5 +282,5 @@ Promise.all(resolveComponents)
|
||||
})
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error('[nuxt.js] Cannot load components', err)
|
||||
console.error('[nuxt.js] Cannot load components', err) // eslint-disable-line no-console
|
||||
})
|
||||
|
@ -88,15 +88,14 @@ exports.options = function () {
|
||||
}
|
||||
|
||||
exports.build = function * () {
|
||||
console.log(this.srcDir)
|
||||
/*
|
||||
** Check if pages dir exists and warn if not
|
||||
*/
|
||||
if (!fs.existsSync(join(this.srcDir, 'pages'))) {
|
||||
if (fs.existsSync(join(this.srcDir, '..', 'pages'))) {
|
||||
console.error('> No `pages` directory found. Did you mean to run `nuxt` in the parent (`../`) directory?')
|
||||
console.error('> No `pages` directory found. Did you mean to run `nuxt` in the parent (`../`) directory?') // eslint-disable-line no-console
|
||||
} else {
|
||||
console.error('> Couldn\'t find a `pages` directory. Please create one under the project root')
|
||||
console.error('> Couldn\'t find a `pages` directory. Please create one under the project root') // eslint-disable-line no-console
|
||||
}
|
||||
process.exit(1)
|
||||
}
|
||||
@ -209,7 +208,7 @@ function * generateRoutesAndFiles () {
|
||||
templateVars.components.ErrorPage = r(this.srcDir, 'pages/_error.vue')
|
||||
}
|
||||
if (fs.existsSync(join(this.srcDir, 'layouts', 'error.vue'))) {
|
||||
templateVars.appPath = r(this.srcDir, 'layouts/error.vue')
|
||||
templateVars.components.ErrorPage = r(this.dir, 'layouts/error.vue')
|
||||
}
|
||||
let moveTemplates = templatesFiles.map((file) => {
|
||||
return readFile(r(__dirname, '..', 'app', file), 'utf8')
|
||||
@ -264,8 +263,8 @@ function webpackWatchAndUpdate () {
|
||||
this.webpackServerWatcher = serverCompiler.watch({}, (err, stats) => {
|
||||
if (err) throw err
|
||||
stats = stats.toJson()
|
||||
stats.errors.forEach(err => console.error(err))
|
||||
stats.warnings.forEach(err => console.warn(err))
|
||||
stats.errors.forEach(err => console.error(err)) // eslint-disable-line no-console
|
||||
stats.warnings.forEach(err => console.warn(err)) // eslint-disable-line no-console
|
||||
createRenderer.call(this, mfs.readFileSync(outputPath, 'utf-8'))
|
||||
})
|
||||
}
|
||||
@ -276,7 +275,7 @@ function webpackRunClient () {
|
||||
const serverCompiler = webpack(clientConfig)
|
||||
serverCompiler.run((err, stats) => {
|
||||
if (err) return reject(err)
|
||||
console.log('[nuxt:build:client]\n', stats.toString({ chunks: false, colors: true }))
|
||||
console.log('[nuxt:build:client]\n', stats.toString({ chunks: false, colors: true })) // eslint-disable-line no-console
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
@ -288,7 +287,7 @@ function webpackRunServer () {
|
||||
const serverCompiler = webpack(serverConfig)
|
||||
serverCompiler.run((err, stats) => {
|
||||
if (err) return reject(err)
|
||||
console.log('[nuxt:build:server]\n', stats.toString({ chunks: false, colors: true }))
|
||||
console.log('[nuxt:build:server]\n', stats.toString({ chunks: false, colors: true })) // eslint-disable-line no-console
|
||||
const bundlePath = join(serverConfig.output.path, serverConfig.output.filename)
|
||||
readFile(bundlePath, 'utf8')
|
||||
.then((bundle) => {
|
||||
@ -326,7 +325,7 @@ function watchPages () {
|
||||
var d = Date.now()
|
||||
co(generateRoutesAndFiles.bind(this))
|
||||
.then(() => {
|
||||
console.log('Time to gen:' + (Date.now() - d) + 'ms')
|
||||
console.log('Time to gen:' + (Date.now() - d) + 'ms') // eslint-disable-line no-console
|
||||
})
|
||||
}, 200)
|
||||
this.pagesFilesWatcher = chokidar.watch(patterns, options)
|
||||
|
@ -7,7 +7,7 @@ const pify = require('pify')
|
||||
const pathToRegexp = require('path-to-regexp')
|
||||
const _ = require('lodash')
|
||||
const { resolve, join, dirname, sep } = require('path')
|
||||
const { urlJoin, promisifyRouteParams } = require('./utils')
|
||||
const { promisifyRouteParams } = require('./utils')
|
||||
const copy = pify(fs.copy)
|
||||
const remove = pify(fs.remove)
|
||||
const writeFile = pify(fs.writeFile)
|
||||
@ -19,15 +19,16 @@ const defaults = {
|
||||
}
|
||||
|
||||
module.exports = function () {
|
||||
const s = Date.now()
|
||||
/*
|
||||
** Update loaders config to add router.base path
|
||||
*/
|
||||
this.options.build.loaders.forEach((config) => {
|
||||
if (['file', 'url', 'file-loader', 'url-loader'].includes(config.loader)) {
|
||||
config.query = config.query || {}
|
||||
config.query.publicPath = urlJoin(this.options.router.base, '/_nuxt/')
|
||||
}
|
||||
})
|
||||
// this.options.build.loaders.forEach((config) => {
|
||||
// if (['file', 'url', 'file-loader', 'url-loader'].includes(config.loader)) {
|
||||
// config.query = config.query || {}
|
||||
// config.query.publicPath = urlJoin(this.options.router.base, '/_nuxt/')
|
||||
// }
|
||||
// })
|
||||
/*
|
||||
** Set variables
|
||||
*/
|
||||
@ -66,40 +67,38 @@ module.exports = function () {
|
||||
/*
|
||||
** Generate html files from routes
|
||||
*/
|
||||
var promises = []
|
||||
let routes = []
|
||||
this.routes.forEach((route) => {
|
||||
let subRoutes = []
|
||||
if (route.path.includes(':') || route.path.includes('*')) {
|
||||
const routeParams = this.options.generate.routeParams[route.path]
|
||||
if (!routeParams) {
|
||||
console.error(`Could not generate the dynamic route ${route.path}, please add the mapping params in nuxt.config.js (generate.routeParams).`)
|
||||
console.error(`Could not generate the dynamic route ${route.path}, please add the mapping params in nuxt.config.js (generate.routeParams).`) // eslint-disable-line no-console
|
||||
return process.exit(1)
|
||||
}
|
||||
const toPath = pathToRegexp.compile(route.path)
|
||||
routeParams.forEach((params) => {
|
||||
const newRoute = Object.assign({}, route, { path: toPath(params) })
|
||||
subRoutes.push(newRoute)
|
||||
})
|
||||
routes = routes.concat(routeParams.map((params) => {
|
||||
return Object.assign({}, route, { path: toPath(params) })
|
||||
}))
|
||||
} else {
|
||||
subRoutes.push(route)
|
||||
routes.push(route)
|
||||
}
|
||||
subRoutes.forEach((route) => {
|
||||
var promise = this.renderRoute(route.path)
|
||||
.then(({ html }) => {
|
||||
})
|
||||
return co(function * () {
|
||||
while (routes.length) {
|
||||
yield routes.splice(0, 500).map((route) => {
|
||||
return co(function * () {
|
||||
const { html } = yield self.renderRoute(route.path)
|
||||
var path = join(route.path, sep, 'index.html') // /about -> /about/index.html
|
||||
debug('Generate file: ' + path)
|
||||
path = join(distPath, path)
|
||||
// Make sure the sub folders are created
|
||||
return co(function * () {
|
||||
yield mkdirp(dirname(path))
|
||||
yield writeFile(path, html, 'utf8')
|
||||
})
|
||||
})
|
||||
promises.push(promise)
|
||||
}
|
||||
})
|
||||
})
|
||||
return Promise.all(promises)
|
||||
})
|
||||
.then((pages) => {
|
||||
// Add .nojekyll file to let Github Pages add the _nuxt/ folder
|
||||
// https://help.github.com/articles/files-that-start-with-an-underscore-are-missing/
|
||||
@ -107,7 +106,9 @@ module.exports = function () {
|
||||
return writeFile(nojekyllPath, '')
|
||||
})
|
||||
.then(() => {
|
||||
debug('HTML Files generated')
|
||||
const duration = Math.round((Date.now() - s) / 100) / 10
|
||||
debug(`HTML Files generated in ${duration}s`)
|
||||
return this
|
||||
})
|
||||
}
|
||||
|
||||
@ -119,8 +120,8 @@ function resolveRouteParams (routeParams) {
|
||||
routeParams[routePath] = routeParamsData
|
||||
})
|
||||
.catch((e) => {
|
||||
console.error(`Could not resolve routeParams[${routePath}]`)
|
||||
console.error(e)
|
||||
console.error(`Could not resolve routeParams[${routePath}]`) // eslint-disable-line no-console
|
||||
console.error(e) // eslint-disable-line no-console
|
||||
process.exit(1)
|
||||
})
|
||||
promises.push(promise)
|
||||
|
@ -5,7 +5,7 @@ const { getContext } = require('./utils')
|
||||
|
||||
exports.render = function (req, res) {
|
||||
if (!this.renderer && !this.dev) {
|
||||
console.error('> No build files found, please run `nuxt build` before launching `nuxt start`')
|
||||
console.error('> No build files found, please run `nuxt build` before launching `nuxt start`') // eslint-disable-line no-console
|
||||
process.exit(1)
|
||||
}
|
||||
if (!this.renderer) {
|
||||
|
@ -19,7 +19,7 @@ class Server {
|
||||
host = host || 'localhost'
|
||||
port = port || 3000
|
||||
this.server.listen(port, host, () => {
|
||||
console.log('Ready on http://%s:%s', host, port)
|
||||
console.log('Ready on http://%s:%s', host, port) // eslint-disable-line no-console
|
||||
})
|
||||
return this
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nuxt",
|
||||
"version": "0.8.2",
|
||||
"version": "0.8.3",
|
||||
"description": "A minimalistic framework for server-rendered Vue.js applications (inspired by Next.js)",
|
||||
"contributors": [
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user