From a585d8cb35f3463b9b07ec162788165dbc4a1b1c Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Sat, 19 Aug 2017 14:59:41 +0430 Subject: [PATCH] imrpove CLI experience for OPEN url --- lib/core/nuxt.js | 15 ++++++++++----- lib/core/renderer.js | 37 ++++++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/lib/core/nuxt.js b/lib/core/nuxt.js index 35820c7339..68eb6ef964 100644 --- a/lib/core/nuxt.js +++ b/lib/core/nuxt.js @@ -32,6 +32,9 @@ export default class Nuxt extends Tapable { this.renderRoute = this.renderer.renderRoute.bind(this.renderer) this.renderAndGetWindow = this.renderer.renderAndGetWindow.bind(this.renderer) + // Default Show Open if Nuxt is not listening + this.showOpen = () => {} + this._ready = this.ready().catch(this.errorHandler) } @@ -49,6 +52,13 @@ export default class Nuxt extends Tapable { } listen (port = 3000, host = 'localhost') { + // Update showOpen + this.showOpen = () => { + const _host = host === '0.0.0.0' ? 'localhost' : host + // eslint-disable-next-line no-console + console.log('\n' + chalk.bgGreen.black(' OPEN ') + chalk.green(` http://${_host}:${port}\n`)) + } + return new Promise((resolve, reject) => { const server = this.renderer.app.listen({ port, host, exclusive: false }, err => { /* istanbul ignore if */ @@ -56,11 +66,6 @@ export default class Nuxt extends Tapable { return reject(err) } - // Show Open URL - let _host = host === '0.0.0.0' ? 'localhost' : host - // eslint-disable-next-line no-console - console.log('\n' + chalk.bold(chalk.bgGreen.white(' OPEN ') + chalk.green(` http://${_host}:${port}\n`))) - // Close server on nuxt close this.plugin('close', () => new Promise((resolve, reject) => { // Destroy server by forcing every connection to be closed diff --git a/lib/core/renderer.js b/lib/core/renderer.js index cf9003f2bf..512848d2e9 100644 --- a/lib/core/renderer.js +++ b/lib/core/renderer.js @@ -124,22 +124,41 @@ export default class Renderer extends Tapable { get isReady () { if (this.noSSR) { - return this.resources.spaTemplate + return Boolean(this.resources.spaTemplate) } - return this.bundleRenderer && this.resources.ssrTemplate + + return Boolean(this.bundleRenderer && this.resources.ssrTemplate) + } + + get isResourcesAvailable () { + // Required for both + if (!this.resources.clientManifest) { + return false + } + + // Required for SPA rendering + if (this.noSSR) { + return Boolean(this.resources.spaTemplate) + } + + // Required for bundle renderer + return Boolean(this.resources.ssrTemplate && this.resources.serverBundle) } createRenderer () { - // Create Meta Renderer - this.metaRenderer = new MetaRenderer(this.nuxt, this) - - // Check if SSR is disabled - if (this.noSSR) { + // Ensure resources are available + if (!this.isResourcesAvailable) { return } - // If resources are not yet provided - if (!this.resources.serverBundle || !this.resources.clientManifest) { + // Create Meta Renderer + this.metaRenderer = new MetaRenderer(this.nuxt, this) + + // Show Open URL + this.nuxt.showOpen() + + // Skip following steps if noSSR mode + if (this.noSSR) { return }