diff --git a/packages/nuxi/src/commands/build.ts b/packages/nuxi/src/commands/build.ts index da19795a5fc5..9ac44668d8fb 100644 --- a/packages/nuxi/src/commands/build.ts +++ b/packages/nuxi/src/commands/build.ts @@ -27,6 +27,11 @@ export default defineNuxtCommand({ cwd: rootDir, fileName: args.dotenv }, + defaults: { + experimental: { + payloadExtraction: args.prerender ? true : undefined + } + }, overrides: { _generate: args.prerender } diff --git a/packages/schema/src/config/experimental.ts b/packages/schema/src/config/experimental.ts index df78027ee195..c7096ca04ab9 100644 --- a/packages/schema/src/config/experimental.ts +++ b/packages/schema/src/config/experimental.ts @@ -77,7 +77,15 @@ export default defineUntypedSchema({ /** * When this option is enabled (by default) payload of pages generated with `nuxt generate` are extracted */ - payloadExtraction: true, + payloadExtraction: { + async $resolve(enabled, get) { + enabled = enabled ?? false + if (enabled) { + console.warn('Using experimental payload extraction for full-static output. You can opt-out by setting `experimental.payloadExtraction` to `false`.') + } + return enabled + } + }, /** Enable cross-origin prefetch using the Speculation Rules API. */ crossOriginPrefetch: false, diff --git a/test/fixtures/basic/nuxt.config.ts b/test/fixtures/basic/nuxt.config.ts index 65664c7d7158..b7d6bad0ed9d 100644 --- a/test/fixtures/basic/nuxt.config.ts +++ b/test/fixtures/basic/nuxt.config.ts @@ -105,7 +105,8 @@ export default defineNuxtConfig({ experimental: { inlineSSRStyles: id => !!id && !id.includes('assets.vue'), reactivityTransform: true, - treeshakeClientOnly: true + treeshakeClientOnly: true, + payloadExtraction: true }, appConfig: { fromNuxtConfig: true,