From 536aab6380042bebd27a7c443724a581859ac007 Mon Sep 17 00:00:00 2001 From: Ricardo Gobbo de Souza Date: Sat, 3 Feb 2018 14:04:15 -0200 Subject: [PATCH] Moved options to a new `dir` block: --- lib/builder/builder.js | 18 +++++++++--------- lib/builder/generator.js | 2 +- lib/builder/webpack/base.config.js | 4 ++-- lib/builder/webpack/style-loader.js | 4 ++-- lib/common/options.js | 8 +++++--- lib/core/renderer.js | 2 +- test/fixtures/custom-dirs/nuxt.config.js | 10 ++++++---- 7 files changed, 26 insertions(+), 22 deletions(-) diff --git a/lib/builder/builder.js b/lib/builder/builder.js index 655c2a099d..f537d64b23 100644 --- a/lib/builder/builder.js +++ b/lib/builder/builder.js @@ -137,15 +137,15 @@ module.exports = class Builder { // Check if pages dir exists and warn if not this._nuxtPages = typeof this.options.build.createRoutes !== 'function' if (this._nuxtPages) { - if (!existsSync(join(this.options.srcDir, this.options.pagesDir))) { + if (!existsSync(join(this.options.srcDir, this.options.dir.pages))) { let dir = this.options.srcDir - if (existsSync(join(this.options.srcDir, '..', this.options.pagesDir))) { + if (existsSync(join(this.options.srcDir, '..', this.options.dir.pages))) { throw new Error( - `No \`${this.options.pagesDir}\` directory found in ${dir}. Did you mean to run \`nuxt\` in the parent (\`../\`) directory?` + `No \`${this.options.dir.pages}\` directory found in ${dir}. Did you mean to run \`nuxt\` in the parent (\`../\`) directory?` ) } else { throw new Error( - `Couldn't find a \`${this.options.pagesDir}\` directory in ${dir}. Please create one under the project root` + `Couldn't find a \`${this.options.dir.pages}\` directory in ${dir}. Please create one under the project root` ) } } @@ -314,7 +314,7 @@ module.exports = class Builder { if (this._nuxtPages) { // Use nuxt.js createRoutes bases on pages/ const files = {} - ;(await glob(`${this.options.pagesDir}/**/*.{vue,js}`, { + ;(await glob(`${this.options.dir.pages}/**/*.{vue,js}`, { cwd: this.options.srcDir, ignore: this.options.ignore })).forEach(f => { @@ -326,7 +326,7 @@ module.exports = class Builder { templateVars.router.routes = createRoutes( Object.values(files), this.options.srcDir, - this.options.pagesDir + this.options.dir.pages ) } else { templateVars.router.routes = this.options.build.createRoutes( @@ -647,9 +647,9 @@ module.exports = class Builder { ] if (this._nuxtPages) { patterns.push( - r(src, this.options.pagesDir), - r(src, `${this.options.pagesDir}/*.{vue,js}`), - r(src, `${this.options.pagesDir}/**/*.{vue,js}`) + r(src, this.options.dir.pages), + r(src, `${this.options.dir.pages}/*.{vue,js}`), + r(src, `${this.options.dir.pages}/**/*.{vue,js}`) ) } patterns = _.map(patterns, p => upath.normalizeSafe(p)) diff --git a/lib/builder/generator.js b/lib/builder/generator.js index f55c2e8479..c0057e637f 100644 --- a/lib/builder/generator.js +++ b/lib/builder/generator.js @@ -27,7 +27,7 @@ module.exports = class Generator { this.builder = builder // Set variables - this.staticRoutes = resolve(this.options.srcDir, this.options.staticDir) + this.staticRoutes = resolve(this.options.srcDir, this.options.dir.static) this.srcBuiltPath = resolve(this.options.buildDir, 'dist') this.distPath = resolve(this.options.rootDir, this.options.generate.dir) this.distNuxtPath = join( diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js index 8650b3c5e3..9da9e42c07 100644 --- a/lib/builder/webpack/base.config.js +++ b/lib/builder/webpack/base.config.js @@ -23,8 +23,8 @@ module.exports = function webpackBaseConfig({ name, isServer }) { // Used by vue-loader so we can use in templates // with - configAlias[this.options.assetsDir] = join(this.options.srcDir, this.options.assetsDir) - configAlias[this.options.staticDir] = join(this.options.srcDir, this.options.staticDir) + configAlias[this.options.dir.assets] = join(this.options.srcDir, this.options.dir.assets) + configAlias[this.options.dir.static] = join(this.options.srcDir, this.options.dir.static) const config = { name, diff --git a/lib/builder/webpack/style-loader.js b/lib/builder/webpack/style-loader.js index f832415593..ba3a463a12 100755 --- a/lib/builder/webpack/style-loader.js +++ b/lib/builder/webpack/style-loader.js @@ -57,8 +57,8 @@ module.exports = function styleLoader(ext, loaders = [], isVueLoader = false) { // css-loader // https://github.com/webpack-contrib/css-loader const cssLoaderAlias = {} - cssLoaderAlias[`/${this.options.assetsDir}`] = join(this.options.srcDir, this.options.assetsDir) - cssLoaderAlias[`/${this.options.staticDir}`] = join(this.options.srcDir, this.options.staticDir) + cssLoaderAlias[`/${this.options.dir.assets}`] = join(this.options.srcDir, this.options.dir.assets) + cssLoaderAlias[`/${this.options.dir.static}`] = join(this.options.srcDir, this.options.dir.static) loaders.unshift({ loader: 'css-loader', diff --git a/lib/common/options.js b/lib/common/options.js index 3e81743abd..e0d0f282a3 100755 --- a/lib/common/options.js +++ b/lib/common/options.js @@ -284,9 +284,11 @@ Options.defaults = { name: 'layout', mode: 'out-in' }, - assetsDir: 'assets', - pagesDir: 'pages', - staticDir: 'static', + dir: { + assets: 'assets', + pages: 'pages', + static: 'static' + }, router: { mode: 'history', base: '/', diff --git a/lib/core/renderer.js b/lib/core/renderer.js index 7eac5b58bf..8e994b3976 100644 --- a/lib/core/renderer.js +++ b/lib/core/renderer.js @@ -251,7 +251,7 @@ module.exports = class Renderer { // For serving static/ files to / this.useMiddleware( serveStatic( - resolve(this.options.srcDir, this.options.staticDir), + resolve(this.options.srcDir, this.options.dir.static), this.options.render.static ) ) diff --git a/test/fixtures/custom-dirs/nuxt.config.js b/test/fixtures/custom-dirs/nuxt.config.js index bc75a47d98..d3b73492fd 100644 --- a/test/fixtures/custom-dirs/nuxt.config.js +++ b/test/fixtures/custom-dirs/nuxt.config.js @@ -1,6 +1,8 @@ module.exports = { - assetsDir: 'custom-assets', - pagesDir: 'custom-pages', - staticDir: 'custom-static', - css: [{ src: '~/custom-assets/app.css' }] + css: [{ src: '~/custom-assets/app.css' }], + dir: { + assets: 'custom-assets', + pages: 'custom-pages', + static: 'custom-static' + } }