diff --git a/packages/schema/src/config/common.ts b/packages/schema/src/config/common.ts index ad8e5f20b0..07e3af834d 100644 --- a/packages/schema/src/config/common.ts +++ b/packages/schema/src/config/common.ts @@ -175,7 +175,29 @@ export default defineUntypedSchema({ * ``` */ buildDir: { - $resolve: async (val: string | undefined, get): Promise => resolve(await get('rootDir') as string, val || '.nuxt'), + $resolve: async (val: string | undefined, get): Promise => { + const rootDir = await get('rootDir') as string + + if (val) { + return resolve(rootDir, val) + } + + const defaultBuildDir = resolve(rootDir, '.nuxt') + + const isDev = await get('dev') as boolean + if (isDev) { + return defaultBuildDir + } + + // TODO: nuxi CLI should ensure .nuxt dir exists + if (!existsSync(defaultBuildDir)) { + // This is to ensure that types continue to work for CI builds + return defaultBuildDir + } + + // TODO: handle build caching + using buildId in directory + return resolve(rootDir, 'node_modules/.cache/nuxt/builds', 'production') + }, }, /** diff --git a/test/fixtures/basic-types/nuxt.config.ts b/test/fixtures/basic-types/nuxt.config.ts index 2a573895d0..ffa2356e3a 100644 --- a/test/fixtures/basic-types/nuxt.config.ts +++ b/test/fixtures/basic-types/nuxt.config.ts @@ -9,7 +9,6 @@ export default defineNuxtConfig({ future: { typescriptBundlerResolution: process.env.MODULE_RESOLUTION === 'bundler', }, - buildDir: process.env.NITRO_BUILD_DIR, builder: process.env.TEST_BUILDER as 'webpack' | 'vite' ?? 'vite', theme: './extends/bar', extends: [ diff --git a/test/fixtures/basic/nuxt.config.ts b/test/fixtures/basic/nuxt.config.ts index 340185b78a..767f3008b2 100644 --- a/test/fixtures/basic/nuxt.config.ts +++ b/test/fixtures/basic/nuxt.config.ts @@ -31,7 +31,6 @@ export default defineNuxtConfig({ include: ['keepalive-in-config', 'not-keepalive-in-nuxtpage'], }, }, - buildDir: process.env.NITRO_BUILD_DIR, builder: process.env.TEST_BUILDER as 'webpack' | 'vite' ?? 'vite', appId: 'nuxt-app-basic', build: { @@ -68,7 +67,6 @@ export default defineNuxtConfig({ '/hydration/spa-redirection/**': { ssr: false }, '/no-scripts': { experimentalNoScripts: true }, }, - output: { dir: process.env.NITRO_OUTPUT_DIR }, prerender: { routes: [ '/random/a', diff --git a/test/hmr.test.ts b/test/hmr.test.ts index d1f44edd46..1789c37ed9 100644 --- a/test/hmr.test.ts +++ b/test/hmr.test.ts @@ -23,8 +23,6 @@ if (process.env.TEST_ENV !== 'built' && !isWindows) { setupTimeout: (isWindows ? 360 : 120) * 1000, nuxtConfig: { builder: isWebpack ? 'webpack' : 'vite', - buildDir: process.env.NITRO_BUILD_DIR, - nitro: { output: { dir: process.env.NITRO_OUTPUT_DIR } }, }, }) diff --git a/test/suspense.test.ts b/test/suspense.test.ts index 53d48c852f..859a934817 100644 --- a/test/suspense.test.ts +++ b/test/suspense.test.ts @@ -14,8 +14,6 @@ await setup({ setupTimeout: (isWindows ? 360 : 120) * 1000, nuxtConfig: { builder: isWebpack ? 'webpack' : 'vite', - buildDir: process.env.NITRO_BUILD_DIR, - nitro: { output: { dir: process.env.NITRO_OUTPUT_DIR } }, }, })