diff --git a/lib/module.js b/lib/module.js index 7f853ad203..b47aac2d15 100755 --- a/lib/module.js +++ b/lib/module.js @@ -10,6 +10,7 @@ class Module { constructor (nuxt) { this.nuxt = nuxt this.options = nuxt.options + this.modules = [] } addVendor (vendor) { @@ -75,7 +76,14 @@ class Module { this.options.router.extendRoutes = chainFn(this.options.router.extendRoutes, fn) } - installModule (moduleOpts) { + requireModule (moduleOpts) { + if (this.modules.indexOf(moduleOpts) !== -1 || this.modules.indexOf(moduleOpts.src) !== -1) { + return + } + this.addModule(moduleOpts) + } + + addModule (moduleOpts) { /* istanbul ignore if */ if (!moduleOpts) { return @@ -107,6 +115,8 @@ class Module { // eslint-disable-next-line no-console console.error('[Nuxt] Module should be a function', module) } + // Add module to this.modules + this.modules.push(module) // Call module with `this` context and pass options return new Promise((resolve, reject) => { const result = module.call(this, options, err => { diff --git a/lib/nuxt.js b/lib/nuxt.js index cbe91a83a4..55fcf1919a 100644 --- a/lib/nuxt.js +++ b/lib/nuxt.js @@ -118,7 +118,7 @@ class Nuxt { // Add module integration this.module = new Module(this) // Install all modules in sequence and then return `this` instance - return utils.sequence(options.modules, this.module.installModule.bind(this.module)) + return utils.sequence(options.modules, this.module.addModule.bind(this.module)) .then(() => this) .catch(/* istanbul ignore next */ (err) => { console.error('[nuxt] error while initializing modules') // eslint-disable-line no-console