mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-18 14:41:25 +00:00
Update dept and start next generate
This commit is contained in:
parent
e441b7eb12
commit
40515ac91a
@ -1,7 +1,7 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import Meta from 'vue-meta/lib/vue-meta.js' // require the ES2015 lib
|
import Meta from 'vue-meta'
|
||||||
import router from './router.js'
|
import router from './router.js'
|
||||||
<% if (store) { %>import store from '~store/index.js'<% } %>
|
<% if (store) { %>import store from '~store/index.js'<% } %>
|
||||||
import NuxtContainer from './components/nuxt-container.vue'
|
import NuxtContainer from './components/nuxt-container.vue'
|
||||||
|
@ -6,7 +6,7 @@ import Router from 'vue-router'
|
|||||||
Vue.use(Router)
|
Vue.use(Router)
|
||||||
|
|
||||||
<% uniqBy(router.routes, '_name').forEach((route) => { %>
|
<% uniqBy(router.routes, '_name').forEach((route) => { %>
|
||||||
const <%= route._name %> = process.BROWSER ? () => System.import('<%= route._component %>') : require('<%= route._component %>')
|
const <%= route._name %> = process.BROWSER_BUILD ? () => System.import('<%= route._component %>') : require('<%= route._component %>')
|
||||||
<% }) %>
|
<% }) %>
|
||||||
|
|
||||||
const scrollBehavior = (to, from, savedPosition) => {
|
const scrollBehavior = (to, from, savedPosition) => {
|
||||||
|
@ -5,7 +5,6 @@ const _ = require('lodash')
|
|||||||
const co = require('co')
|
const co = require('co')
|
||||||
const chokidar = require('chokidar')
|
const chokidar = require('chokidar')
|
||||||
const fs = require('fs-extra')
|
const fs = require('fs-extra')
|
||||||
const glob = require('glob-promise')
|
|
||||||
const hash = require('hash-sum')
|
const hash = require('hash-sum')
|
||||||
const pify = require('pify')
|
const pify = require('pify')
|
||||||
const webpack = require('webpack')
|
const webpack = require('webpack')
|
||||||
@ -16,6 +15,7 @@ const remove = pify(fs.remove)
|
|||||||
const readFile = pify(fs.readFile)
|
const readFile = pify(fs.readFile)
|
||||||
const writeFile = pify(fs.writeFile)
|
const writeFile = pify(fs.writeFile)
|
||||||
const mkdirp = pify(fs.mkdirp)
|
const mkdirp = pify(fs.mkdirp)
|
||||||
|
const glob = pify(require('glob'))
|
||||||
const reqSep = /\//g
|
const reqSep = /\//g
|
||||||
const sysSep = _.escapeRegExp(sep)
|
const sysSep = _.escapeRegExp(sep)
|
||||||
const normalize = string => string.replace(reqSep, sysSep)
|
const normalize = string => string.replace(reqSep, sysSep)
|
||||||
@ -171,8 +171,7 @@ function * generateRoutesAndFiles () {
|
|||||||
isDev: this.dev,
|
isDev: this.dev,
|
||||||
router: {
|
router: {
|
||||||
base: this.options.router.base,
|
base: this.options.router.base,
|
||||||
linkActiveClass: this.options.router.linkActiveClass,
|
linkActiveClass: this.options.router.linkActiveClass
|
||||||
routes: this.routes
|
|
||||||
},
|
},
|
||||||
head: this.options.head,
|
head: this.options.head,
|
||||||
store: this.options.store,
|
store: this.options.store,
|
||||||
@ -190,10 +189,13 @@ function * generateRoutesAndFiles () {
|
|||||||
templateVars.loading = templateVars.loading + '.vue'
|
templateVars.loading = templateVars.loading + '.vue'
|
||||||
}
|
}
|
||||||
// Format routes for the lib/app/router.js template
|
// Format routes for the lib/app/router.js template
|
||||||
templateVars.router.routes.forEach((route) => {
|
templateVars.router.routes = this.routes.map((route) => {
|
||||||
route._component = route.component
|
const r = Object.assign({}, route)
|
||||||
route._name = '_' + hash(route._component)
|
r._component = r.component
|
||||||
route.component = route._name
|
r._name = '_' + hash(r._component)
|
||||||
|
r.component = r._name
|
||||||
|
r.path = r.path.replace(/\\/g, '\\\\') // regex expression in route path escaping for lodash templating
|
||||||
|
return r
|
||||||
})
|
})
|
||||||
if (files.includes('pages/_app.vue')) {
|
if (files.includes('pages/_app.vue')) {
|
||||||
templateVars.appPath = r(this.dir, 'pages/_app.vue')
|
templateVars.appPath = r(this.dir, 'pages/_app.vue')
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
|
const debug = require('debug')('nuxt:generate')
|
||||||
const fs = require('fs-extra')
|
const fs = require('fs-extra')
|
||||||
const co = require('co')
|
const co = require('co')
|
||||||
const pify = require('pify')
|
const pify = require('pify')
|
||||||
const debug = require('debug')('nuxt:generate')
|
const pathToRegexp = require('path-to-regexp')
|
||||||
const _ = require('lodash')
|
const _ = require('lodash')
|
||||||
const { resolve, join, dirname, sep } = require('path')
|
const { resolve, join, dirname, sep } = require('path')
|
||||||
const { urlJoin } = require('./utils')
|
const { urlJoin, promisifyRouteParams } = require('./utils')
|
||||||
const copy = pify(fs.copy)
|
const copy = pify(fs.copy)
|
||||||
const remove = pify(fs.remove)
|
const remove = pify(fs.remove)
|
||||||
const writeFile = pify(fs.writeFile)
|
const writeFile = pify(fs.writeFile)
|
||||||
@ -59,24 +60,45 @@ module.exports = function () {
|
|||||||
yield copy(srcBuiltPath, distNuxtPath)
|
yield copy(srcBuiltPath, distNuxtPath)
|
||||||
debug('Static & build files copied')
|
debug('Static & build files copied')
|
||||||
})
|
})
|
||||||
|
.then(() => {
|
||||||
|
// Resolve config.generate.routesParams promises before generating the routes
|
||||||
|
return resolveRouteParams(this.options.generate.routeParams)
|
||||||
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
/*
|
/*
|
||||||
** Generate html files from routes
|
** Generate html files from routes
|
||||||
*/
|
*/
|
||||||
var promises = []
|
var promises = []
|
||||||
this.routes.forEach((route) => {
|
this.routes.forEach((route) => {
|
||||||
var promise = this.renderRoute(route.path)
|
let subRoutes = []
|
||||||
.then(({ html }) => {
|
if (route.path.includes(':') || route.path.includes('*')) {
|
||||||
var path = join(route.path, sep, 'index.html') // /about -> /about/index.html
|
const routeParams = this.options.generate.routeParams[route.path]
|
||||||
debug('Generate file: ' + path)
|
if (!routeParams) {
|
||||||
path = join(distPath, path)
|
console.error(`Could not generate the dynamic route ${route.path}, please add the mapping params in nuxt.config.js (generate.routeParams).`)
|
||||||
// Make sure the sub folders are created
|
return process.exit(1)
|
||||||
return co(function * () {
|
}
|
||||||
yield mkdirp(dirname(path))
|
const toPath = pathToRegexp.compile(route.path)
|
||||||
yield writeFile(path, html, 'utf8')
|
routeParams.forEach((params) => {
|
||||||
|
const newRoute = Object.assign({}, route, { path: toPath(params) })
|
||||||
|
subRoutes.push(newRoute)
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
subRoutes.push(route)
|
||||||
|
}
|
||||||
|
subRoutes.forEach((route) => {
|
||||||
|
var promise = this.renderRoute(route.path)
|
||||||
|
.then(({ html }) => {
|
||||||
|
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)
|
||||||
})
|
})
|
||||||
promises.push(promise)
|
|
||||||
})
|
})
|
||||||
return Promise.all(promises)
|
return Promise.all(promises)
|
||||||
})
|
})
|
||||||
@ -84,3 +106,20 @@ module.exports = function () {
|
|||||||
debug('HTML Files generated')
|
debug('HTML Files generated')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function resolveRouteParams (routeParams) {
|
||||||
|
let promises = []
|
||||||
|
Object.keys(routeParams).forEach(function (routePath) {
|
||||||
|
let promise = promisifyRouteParams(routeParams[routePath])
|
||||||
|
.then((routeParamsData) => {
|
||||||
|
routeParams[routePath] = routeParamsData
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
console.error(`Could not resolve routeParams[${routePath}]`)
|
||||||
|
console.error(e)
|
||||||
|
process.exit(1)
|
||||||
|
})
|
||||||
|
promises.push(promise)
|
||||||
|
})
|
||||||
|
return Promise.all(promises)
|
||||||
|
}
|
||||||
|
25
lib/utils.js
25
lib/utils.js
@ -31,3 +31,28 @@ exports.waitFor = function * (ms) {
|
|||||||
exports.urlJoin = function () {
|
exports.urlJoin = function () {
|
||||||
return [].slice.call(arguments).join('/').replace(/\/+/g, '/')
|
return [].slice.call(arguments).join('/').replace(/\/+/g, '/')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exports.promisifyRouteParams = function (fn) {
|
||||||
|
// If routeParams[route] is an array
|
||||||
|
if (Array.isArray(fn)) {
|
||||||
|
return Promise.resolve(fn)
|
||||||
|
}
|
||||||
|
let promise
|
||||||
|
// If routeParams[route] is a function expecting a callback
|
||||||
|
if (fn.length === 1) {
|
||||||
|
promise = new Promise((resolve, reject) => {
|
||||||
|
fn(function (err, routeParams) {
|
||||||
|
if (err) {
|
||||||
|
reject(err)
|
||||||
|
}
|
||||||
|
resolve(routeParams)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
promise = fn()
|
||||||
|
}
|
||||||
|
if (!(promise instanceof Promise)) {
|
||||||
|
promise = Promise.resolve(promise)
|
||||||
|
}
|
||||||
|
return promise
|
||||||
|
}
|
||||||
|
12
package.json
12
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "nuxt",
|
"name": "nuxt",
|
||||||
"version": "0.6.9",
|
"version": "0.7.0",
|
||||||
"description": "A minimalistic framework for server-rendered Vue.js applications (inspired by Next.js)",
|
"description": "A minimalistic framework for server-rendered Vue.js applications (inspired by Next.js)",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -30,7 +30,7 @@
|
|||||||
"extract-text-webpack-plugin": "2.0.0-beta.4",
|
"extract-text-webpack-plugin": "2.0.0-beta.4",
|
||||||
"file-loader": "^0.9.0",
|
"file-loader": "^0.9.0",
|
||||||
"fs-extra": "^1.0.0",
|
"fs-extra": "^1.0.0",
|
||||||
"glob-promise": "^2.0.0",
|
"glob": "^7.1.1",
|
||||||
"hash-sum": "^1.0.2",
|
"hash-sum": "^1.0.2",
|
||||||
"lodash": "^4.17.2",
|
"lodash": "^4.17.2",
|
||||||
"lru-cache": "^4.0.1",
|
"lru-cache": "^4.0.1",
|
||||||
@ -39,12 +39,12 @@
|
|||||||
"serialize-javascript": "^1.3.0",
|
"serialize-javascript": "^1.3.0",
|
||||||
"serve-static": "^1.11.1",
|
"serve-static": "^1.11.1",
|
||||||
"url-loader": "^0.5.7",
|
"url-loader": "^0.5.7",
|
||||||
"vue": "^2.1.0",
|
"vue": "^2.1.3",
|
||||||
"vue-loader": "^10.0.0",
|
"vue-loader": "^10.0.0",
|
||||||
"vue-meta": "^0.4.4",
|
"vue-meta": "^0.5.2",
|
||||||
"vue-router": "^2.0.3",
|
"vue-router": "^2.0.3",
|
||||||
"vue-server-renderer": "^2.1.0",
|
"vue-server-renderer": "^2.1.3",
|
||||||
"vue-template-compiler": "^2.1.0",
|
"vue-template-compiler": "^2.1.3",
|
||||||
"vuex": "^2.0.0",
|
"vuex": "^2.0.0",
|
||||||
"webpack": "2.1.0-beta.27",
|
"webpack": "2.1.0-beta.27",
|
||||||
"webpack-dev-middleware": "^1.8.4",
|
"webpack-dev-middleware": "^1.8.4",
|
||||||
|
Loading…
Reference in New Issue
Block a user