From 53851e4319853da85af7085df37181e76561a588 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 27 Sep 2022 15:00:17 +0100 Subject: [PATCH 1/2] feat(schema, nuxt): allow user-configurable serverDir --- packages/nuxt/src/core/nitro.ts | 2 +- packages/schema/src/config/_common.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/nuxt/src/core/nitro.ts b/packages/nuxt/src/core/nitro.ts index d66578d243f..b2e18d5379d 100644 --- a/packages/nuxt/src/core/nitro.ts +++ b/packages/nuxt/src/core/nitro.ts @@ -19,7 +19,7 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) { const nitroConfig: NitroConfig = defu(_nitroConfig, { rootDir: nuxt.options.rootDir, workspaceDir: nuxt.options.workspaceDir, - srcDir: join(nuxt.options.srcDir, 'server'), + srcDir: nuxt.options.serverDir, dev: nuxt.options.dev, preset: nuxt.options.dev ? 'nitro-dev' : undefined, buildDir: nuxt.options.buildDir, diff --git a/packages/schema/src/config/_common.ts b/packages/schema/src/config/_common.ts index 098e1ceee75..344e5d0ede3 100644 --- a/packages/schema/src/config/_common.ts +++ b/packages/schema/src/config/_common.ts @@ -100,6 +100,18 @@ export default defineUntypedSchema({ $resolve: async (val, get) => resolve(await get('rootDir'), val || '.') }, + /** + * Define the server directory of your Nuxt application, where Nitro + * routes, middleware and plugins are kept. + * + * If a relative path is specified, it will be relative to your `rootDir`. + * + * @version 3 + */ + serverDir: { + $resolve: async (val, get) => resolve(await get('rootDir'), val || resolve(await get('srcDir'), 'server')) + }, + /** * Define the directory where your built Nuxt files will be placed. * From 35216505ae1e88f63cd781e4c9f07f684ca70f98 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 27 Sep 2022 15:09:03 +0100 Subject: [PATCH 2/2] fix: update scanDirs --- packages/nuxt/src/core/nitro.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nuxt/src/core/nitro.ts b/packages/nuxt/src/core/nitro.ts index b2e18d5379d..fccf8b6c9f1 100644 --- a/packages/nuxt/src/core/nitro.ts +++ b/packages/nuxt/src/core/nitro.ts @@ -28,7 +28,7 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) { projectRoot: nuxt.options.rootDir, filename: join(nuxt.options.rootDir, '.nuxt/stats', '{name}.html') }, - scanDirs: nuxt.options._layers.map(layer => layer.config.srcDir).filter(Boolean).map(dir => join(dir!, 'server')), + scanDirs: nuxt.options._layers.map(layer => (layer.config.serverDir || layer.config.srcDir) && resolve(layer.cwd, layer.config.serverDir || resolve(layer.config.srcDir, 'server'))).filter(Boolean), renderer: resolve(distDir, 'core/runtime/nitro/renderer'), errorHandler: resolve(distDir, 'core/runtime/nitro/error'), nodeModulesDirs: nuxt.options.modulesDir,