diff --git a/app/Commands/NuxtBuild.js b/app/Commands/NuxtBuild.js deleted file mode 100644 index 33d7d41..0000000 --- a/app/Commands/NuxtBuild.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict' - -const { Command } = use('@adonisjs/ace') -const NuxtService = use('App/Services/Nuxt') - -class NuxtBuild extends Command { - /** - * signature defines the requirements and name - * of command. - * - * @return {String} - */ - static get signature () { - return 'nuxtbuild' - } - - /** - * description is the little helpful information displayed - * on the console. - * - * @return {String} - */ - static get description () { - return 'Build for production the nuxt.js application.' - } - - /** - * handle method is invoked automatically by ace, once your - * command has been executed. - * - * @param {Object} args [description] - * @param {Object} options [description] - */ - async handle () { - this.info('Building nuxt.js application...') - await NuxtService.build(false) - } -} - -module.exports = NuxtBuild diff --git a/app/Controllers/Http/NuxtController.js b/app/Controllers/Http/NuxtController.js index 88b0a47..064d89f 100644 --- a/app/Controllers/Http/NuxtController.js +++ b/app/Controllers/Http/NuxtController.js @@ -1,9 +1,9 @@ 'use strict' -const NuxtService = use('App/Services/Nuxt') - class NuxtController { async render ({ request, response, session }) { + const NuxtService = await use('Nuxt') + /** * Do not end the response when this method has been executed. * Nuxt will write the response in background and will close diff --git a/package.json b/package.json index f0bc1f6..9053b49 100644 --- a/package.json +++ b/package.json @@ -7,24 +7,23 @@ "private": true, "main": "server.js", "scripts": { - "serve:dev": "npm run dev", - "dev": "nodemon --watch app --watch bootstrap --watch config --watch .env -x node server.js", - "build": "node ./ace nuxtbuild", + "dev": "cross-env NODE_ENV=development adonis serve --dev", + "build": "nuxt build -c config/nuxt.js", "start": "cross-env NODE_ENV=production node server.js", "precommit": "npm run lint", "lint": "standard && eslint --ext .js,.vue resources/" }, "dependencies": { - "@adonisjs/ace": "^4.0.7", - "@adonisjs/auth": "^2.0.10", - "@adonisjs/bodyparser": "^1.0.8", - "@adonisjs/cors": "^1.0.2", - "@adonisjs/fold": "^4.0.5", - "@adonisjs/framework": "^4.0.27", - "@adonisjs/ignitor": "^1.0.14", - "@adonisjs/lucid": "^4.0.22", - "@adonisjs/session": "^1.0.19", - "@adonisjs/shield": "^1.0.4", + "@adonisjs/ace": "^5.0.0", + "@adonisjs/auth": "^3.0.1", + "@adonisjs/bodyparser": "^2.0.2", + "@adonisjs/cors": "^1.0.5", + "@adonisjs/fold": "^4.0.7", + "@adonisjs/framework": "^5.0.4", + "@adonisjs/ignitor": "^2.0.5", + "@adonisjs/lucid": "^5.0.2", + "@adonisjs/session": "^1.0.20", + "@adonisjs/shield": "^1.0.6", "cross-env": "^3.1.4", "nuxt": "latest", "standard": "^8.6.0", @@ -46,7 +45,6 @@ "eslint-plugin-html": "^2.0.0", "eslint-plugin-promise": "^3.4.0", "eslint-plugin-standard": "^2.0.1", - "nodemon": "^1.11.0", "standard": "^8.6.0" } } diff --git a/app/Services/Nuxt.js b/providers/Nuxt/index.js similarity index 52% rename from app/Services/Nuxt.js rename to providers/Nuxt/index.js index 6287980..42ff7cd 100644 --- a/app/Services/Nuxt.js +++ b/providers/Nuxt/index.js @@ -1,11 +1,12 @@ 'use strict' -const Env = use('Env') -const Config = use('Config') const { Nuxt, Builder } = require('nuxt') +const Logger = use('Logger') class NuxtService { - constructor () { + constructor (Config, Env) { + this.Config = Config + this.Env = Env this.nuxt = null } @@ -14,12 +15,18 @@ class NuxtService { * * @method boot * - * @return {void} + * @return {Promise} */ - build (dev = Env.get('NODE_ENV') === 'development') { - const config = Config.merge('nuxt', { dev }) - this.nuxt = new Nuxt(config) - return new Builder(this.nuxt).build() + build (dev = this.Env.get('NODE_ENV') === 'development') { + const config = this.Config.merge('nuxt', { dev }) + return new Promise(async (resolve, reject) => { + this.nuxt = await new Nuxt(config) + if (dev) { + await new Builder(this.nuxt).build() + } + Logger.info('Nuxt is ready to handle requests') + resolve(this) + }) } /** @@ -41,5 +48,4 @@ class NuxtService { }) } } - -module.exports = new NuxtService() +module.exports = NuxtService diff --git a/providers/Nuxt/provider.js b/providers/Nuxt/provider.js new file mode 100644 index 0000000..a384430 --- /dev/null +++ b/providers/Nuxt/provider.js @@ -0,0 +1,29 @@ +'use strict' + +const { ServiceProvider } = require('@adonisjs/fold') + +class NuxtProvider extends ServiceProvider { + register () { + this.app.singleton('Adonuxt/Nuxt', () => { + const Config = this.app.use('Adonis/Src/Config') + const Env = this.app.use('Adonis/Src/Env') + const dev = Env.get('NODE_ENV') === 'development' + const instance = new (require('.'))(Config, Env) + if (!dev) { + return instance + } + return instance.build() + }) + } + + boot () { + const Env = this.app.use('Adonis/Src/Env') + const dev = Env.get('NODE_ENV') === 'development' + if (!dev) { + const instance = this.app.use('Adonuxt/Nuxt') + instance.build() + } + } +} + +module.exports = NuxtProvider diff --git a/server.js b/server.js index 9adc769..c3a987b 100644 --- a/server.js +++ b/server.js @@ -22,10 +22,4 @@ const { Ignitor } = require('@adonisjs/ignitor') new Ignitor(require('@adonisjs/fold')) .appRoot(__dirname) .fireHttpServer() - .then(() => { - return use('App/Services/Nuxt').build() - }) - .then(() => { - use('Logger').info('Nuxt is ready to handle requests') - }) .catch(console.error) diff --git a/start/app.js b/start/app.js index fc6429a..2414abb 100644 --- a/start/app.js +++ b/start/app.js @@ -1,5 +1,7 @@ 'use strict' +const path = require('path') + /* |-------------------------------------------------------------------------- | Providers @@ -18,7 +20,8 @@ const providers = [ '@adonisjs/cors/providers/CorsProvider', '@adonisjs/shield/providers/ShieldProvider', '@adonisjs/session/providers/SessionProvider', - '@adonisjs/auth/providers/AuthProvider' + '@adonisjs/auth/providers/AuthProvider', + path.join(__dirname, '..', 'providers', 'Nuxt/provider') ] /* @@ -46,7 +49,9 @@ const aceProviders = [ | { Route: 'Adonis/Src/Route' } | */ -const aliases = {} +const aliases = { + Nuxt: 'Adonuxt/Nuxt' +} /* |-------------------------------------------------------------------------- @@ -56,8 +61,6 @@ const aliases = {} | Here you store ace commands for your package | */ -const commands = [ - 'App/Commands/NuxtBuild' -] +const commands = [] module.exports = { providers, aceProviders, aliases, commands }