From 978a9971594c2c4f3ba3c8c6e12d07338848f5d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Wed, 19 Aug 2020 14:38:18 +0200 Subject: [PATCH] chore: improve resolve app options --- packages/nuxt3/src/builder/app.ts | 21 ++++++++++++++++++--- packages/nuxt3/src/builder/builder.ts | 2 +- packages/nuxt3/src/builder/pages.ts | 10 ++++------ 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/packages/nuxt3/src/builder/app.ts b/packages/nuxt3/src/builder/app.ts index d9a6acaa13..8be413bbec 100644 --- a/packages/nuxt3/src/builder/app.ts +++ b/packages/nuxt3/src/builder/app.ts @@ -1,20 +1,35 @@ import { resolve } from 'path' +import defu from 'defu' import { Builder } from './builder' import { NuxtRoute, resolvePagesRoutes } from './pages' +import { NormalizedConfiguration } from 'src/config' export interface NuxtApp { - srcDir: string + options: AppOptions main?: string routes: NuxtRoute[] } +interface AppOptions { + srcDir?: string + dir?: NormalizedConfiguration['dir'] + extensions?: NormalizedConfiguration['extensions'] +} + // Scan project structure -export async function resolveApp (builder: Builder, srcDir: string): Promise { +export async function resolveApp (builder: Builder, options: AppOptions = {}): Promise { const { nuxt } = builder + options = defu(options, { + srcDir: nuxt.options.srcDir, + dir: nuxt.options.dir, + extensions: nuxt.options.extensions + }) + // Create base app object const app: NuxtApp = { - srcDir, + options, + // Overwritten by the resolvers main: '', routes: [] } diff --git a/packages/nuxt3/src/builder/builder.ts b/packages/nuxt3/src/builder/builder.ts index fe2b571075..3aaac73bf6 100644 --- a/packages/nuxt3/src/builder/builder.ts +++ b/packages/nuxt3/src/builder/builder.ts @@ -70,7 +70,7 @@ export async function generate (builder: Builder) { const { nuxt } = builder await fsExtra.mkdirp(nuxt.options.buildDir) - builder.app = await resolveApp(builder, nuxt.options.srcDir) + builder.app = await resolveApp(builder) const templatesDir = join(builder.nuxt.options.appDir, '_templates') const appTemplates = await scanTemplates(templatesDir, templateData(builder)) diff --git a/packages/nuxt3/src/builder/pages.ts b/packages/nuxt3/src/builder/pages.ts index c7f5c07e0a..7341582b07 100644 --- a/packages/nuxt3/src/builder/pages.ts +++ b/packages/nuxt3/src/builder/pages.ts @@ -13,14 +13,12 @@ export interface NuxtRoute { export async function resolvePagesRoutes (builder, app: NuxtApp) { const { nuxt } = builder + const pagesDirName = app.options.dir.pages + const extensions = app.options.extensions - // TODO: these variables should be overriable by app not global - const pagesDirName = nuxt.options.dir.pages - const extensions = nuxt.options.extensions - - const pagesDir = resolve(app.srcDir, pagesDirName) + const pagesDir = resolve(app.options.srcDir, pagesDirName) const pagesPattern = `${pagesDirName}/**/*.{${extensions.join(',')}}` - const files = await resolveFiles(builder, pagesPattern, app.srcDir) + const files = await resolveFiles(builder, pagesPattern, app.options.srcDir) const routes: NuxtRoute[] = []