mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-23 22:25:12 +00:00
refactor renderer init into it's component
This commit is contained in:
parent
1d95e38f9c
commit
277aa7e6fa
50
lib/nuxt.js
50
lib/nuxt.js
@ -1,8 +1,5 @@
|
|||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
import compression from 'compression'
|
|
||||||
import fs from 'fs-extra'
|
import fs from 'fs-extra'
|
||||||
import pify from 'pify'
|
|
||||||
import serveStatic from 'serve-static'
|
|
||||||
import { resolve, join } from 'path'
|
import { resolve, join } from 'path'
|
||||||
import Tapable from 'tappable'
|
import Tapable from 'tappable'
|
||||||
import * as Utils from './utils'
|
import * as Utils from './utils'
|
||||||
@ -34,13 +31,22 @@ export default class Nuxt extends Tapable {
|
|||||||
// Apply defaults
|
// Apply defaults
|
||||||
this.options = _.defaultsDeep(options, Nuxt.Defaults)
|
this.options = _.defaultsDeep(options, Nuxt.Defaults)
|
||||||
|
|
||||||
|
// If store defined, update store options to true
|
||||||
|
if (fs.existsSync(join(this.options.srcDir, 'store'))) {
|
||||||
|
this.options.store = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// If app.html is defined, set the template path to the user template
|
||||||
|
this.options.appTemplatePath = resolve(__dirname, 'views/app.template.html')
|
||||||
|
if (fs.existsSync(join(this.options.srcDir, 'app.html'))) {
|
||||||
|
this.options.appTemplatePath = join(this.options.srcDir, 'app.html')
|
||||||
|
}
|
||||||
|
|
||||||
// Resolve dirs
|
// Resolve dirs
|
||||||
this.options.rootDir = (typeof options.rootDir === 'string' && options.rootDir ? options.rootDir : process.cwd())
|
this.options.rootDir = (typeof options.rootDir === 'string' && options.rootDir ? options.rootDir : process.cwd())
|
||||||
this.options.srcDir = (typeof options.srcDir === 'string' && options.srcDir ? resolve(options.rootDir, options.srcDir) : this.options.rootDir)
|
this.options.srcDir = (typeof options.srcDir === 'string' && options.srcDir ? resolve(options.rootDir, options.srcDir) : this.options.rootDir)
|
||||||
this.options.buildDir = join(this.options.rootDir, options.buildDir)
|
this.options.buildDir = join(this.options.rootDir, options.buildDir)
|
||||||
|
|
||||||
this.componentTasks()
|
|
||||||
|
|
||||||
// Create instance of core components
|
// Create instance of core components
|
||||||
this.moduleContainer = new Nuxt.ModuleContainer(this)
|
this.moduleContainer = new Nuxt.ModuleContainer(this)
|
||||||
this.builder = new Nuxt.Builder(this)
|
this.builder = new Nuxt.Builder(this)
|
||||||
@ -64,38 +70,6 @@ export default class Nuxt extends Tapable {
|
|||||||
this.initialized = false
|
this.initialized = false
|
||||||
}
|
}
|
||||||
|
|
||||||
componentTasks () {
|
|
||||||
// TODO: This task should move into their own components instead
|
|
||||||
|
|
||||||
// Error template
|
|
||||||
this.errorTemplate = _.template(fs.readFileSync(resolve(__dirname, 'views', 'error.html'), 'utf8'), {
|
|
||||||
interpolate: /{{([\s\S]+?)}}/g
|
|
||||||
})
|
|
||||||
|
|
||||||
// If store defined, update store options to true
|
|
||||||
if (fs.existsSync(join(this.options.srcDir, 'store'))) {
|
|
||||||
this.options.store = true
|
|
||||||
}
|
|
||||||
|
|
||||||
// If app.html is defined, set the template path to the user template
|
|
||||||
this.options.appTemplatePath = resolve(__dirname, 'views/app.template.html')
|
|
||||||
if (fs.existsSync(join(this.options.srcDir, 'app.html'))) {
|
|
||||||
this.options.appTemplatePath = join(this.options.srcDir, 'app.html')
|
|
||||||
}
|
|
||||||
|
|
||||||
// For serving static/ files to /
|
|
||||||
this.serveStatic = pify(serveStatic(resolve(this.options.srcDir, 'static'), this.options.render.static))
|
|
||||||
// For serving .nuxt/dist/ files (only when build.publicPath is not an URL)
|
|
||||||
this.serveStaticNuxt = pify(serveStatic(resolve(this.options.buildDir, 'dist'), {
|
|
||||||
maxAge: (this.options.dev ? 0 : '1y') // 1 year in production
|
|
||||||
}))
|
|
||||||
|
|
||||||
// gzip middleware for production
|
|
||||||
if (!this.options.dev && this.options.render.gzip) {
|
|
||||||
this.gzipMiddleware = pify(compression(this.options.render.gzip))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async init () {
|
async init () {
|
||||||
if (this._init) {
|
if (this._init) {
|
||||||
return this._init
|
return this._init
|
||||||
@ -108,7 +82,7 @@ export default class Nuxt extends Tapable {
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
close (callback) {
|
async close (callback) {
|
||||||
let promises = []
|
let promises = []
|
||||||
/* istanbul ignore if */
|
/* istanbul ignore if */
|
||||||
if (this.webpackDevMiddleware) {
|
if (this.webpackDevMiddleware) {
|
||||||
|
@ -3,6 +3,12 @@ import serialize from 'serialize-javascript'
|
|||||||
import generateETag from 'etag'
|
import generateETag from 'etag'
|
||||||
import fresh from 'fresh'
|
import fresh from 'fresh'
|
||||||
import Tapable from 'tappable'
|
import Tapable from 'tappable'
|
||||||
|
import pify from 'pify'
|
||||||
|
import serveStatic from 'serve-static'
|
||||||
|
import compression from 'compression'
|
||||||
|
import _ from 'lodash'
|
||||||
|
import { resolve } from 'path'
|
||||||
|
import {readFileSync} from 'fs'
|
||||||
import { getContext, setAnsiColors, encodeHtml } from './utils'
|
import { getContext, setAnsiColors, encodeHtml } from './utils'
|
||||||
|
|
||||||
const debug = require('debug')('nuxt:render')
|
const debug = require('debug')('nuxt:render')
|
||||||
@ -16,6 +22,26 @@ export default class Renderer extends Tapable {
|
|||||||
super()
|
super()
|
||||||
this.nuxt = nuxt
|
this.nuxt = nuxt
|
||||||
this.options = nuxt.options
|
this.options = nuxt.options
|
||||||
|
|
||||||
|
this.nuxt.plugin('init', () => {
|
||||||
|
// For serving static/ files to /
|
||||||
|
this.serveStatic = pify(serveStatic(resolve(this.options.srcDir, 'static'), this.options.render.static))
|
||||||
|
|
||||||
|
// For serving .nuxt/dist/ files (only when build.publicPath is not an URL)
|
||||||
|
this.serveStaticNuxt = pify(serveStatic(resolve(this.options.buildDir, 'dist'), {
|
||||||
|
maxAge: (this.options.dev ? 0 : '1y') // 1 year in production
|
||||||
|
}))
|
||||||
|
|
||||||
|
// gzip middleware for production
|
||||||
|
if (!this.options.dev && this.options.render.gzip) {
|
||||||
|
this.gzipMiddleware = pify(compression(this.options.render.gzip))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error template
|
||||||
|
this.errorTemplate = _.template(readFileSync(resolve(__dirname, 'views', 'error.html'), 'utf8'), {
|
||||||
|
interpolate: /{{([\s\S]+?)}}/g
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async render (req, res) {
|
async render (req, res) {
|
||||||
|
Loading…
Reference in New Issue
Block a user