From d1733365f8b20e2b677ce727c787c18e44a88ff8 Mon Sep 17 00:00:00 2001 From: Clayton Chew Date: Sun, 23 Feb 2025 17:31:39 +0800 Subject: [PATCH] fix(nuxt,schema): resolve `shared` dir from config (#31091) --- packages/nuxt/src/core/nitro.ts | 4 ++-- packages/nuxt/src/imports/module.ts | 4 ++-- packages/schema/src/config/common.ts | 6 +++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/nuxt/src/core/nitro.ts b/packages/nuxt/src/core/nitro.ts index 5332b0e9c0..088adff5a1 100644 --- a/packages/nuxt/src/core/nitro.ts +++ b/packages/nuxt/src/core/nitro.ts @@ -57,8 +57,8 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) { continue } - sharedDirs.add(resolve(layer.config.rootDir, 'shared', 'utils')) - sharedDirs.add(resolve(layer.config.rootDir, 'shared', 'types')) + sharedDirs.add(resolve(layer.config.rootDir, layer.config.dir?.shared ?? 'shared', 'utils')) + sharedDirs.add(resolve(layer.config.rootDir, layer.config.dir?.shared ?? 'shared', 'types')) } } diff --git a/packages/nuxt/src/imports/module.ts b/packages/nuxt/src/imports/module.ts index 90411c2842..2b7cb629bc 100644 --- a/packages/nuxt/src/imports/module.ts +++ b/packages/nuxt/src/imports/module.ts @@ -79,8 +79,8 @@ export default defineNuxtModule>({ composablesDirs.push(resolve(layer.config.srcDir, 'utils')) if (isNuxtV4) { - composablesDirs.push(resolve(layer.config.rootDir, 'shared', 'utils')) - composablesDirs.push(resolve(layer.config.rootDir, 'shared', 'types')) + composablesDirs.push(resolve(layer.config.rootDir, layer.config.dir?.shared ?? 'shared', 'utils')) + composablesDirs.push(resolve(layer.config.rootDir, layer.config.dir?.shared ?? 'shared', 'types')) } for (const dir of (layer.config.imports?.dirs ?? [])) { diff --git a/packages/schema/src/config/common.ts b/packages/schema/src/config/common.ts index c53a1ef0fc..641740ed08 100644 --- a/packages/schema/src/config/common.ts +++ b/packages/schema/src/config/common.ts @@ -405,7 +405,11 @@ export default defineResolvers({ /** * The shared directory. This directory is shared between the app and the server. */ - shared: 'shared', + shared: { + $resolve: (val) => { + return val && typeof val === 'string' ? val : 'shared' + }, + }, /** * The directory containing your static files, which will be directly accessible via the Nuxt server