From d864b2bd753b63856b0d5d7c95f595eb324a55c5 Mon Sep 17 00:00:00 2001 From: pooya parsa Date: Wed, 9 Sep 2020 14:39:20 +0000 Subject: [PATCH] chore(config): deprecate mode option (#8044) --- packages/config/src/config/_common.js | 9 +++++---- packages/config/src/options.js | 12 ++++++++++++ .../test/config/__snapshots__/index.test.js.snap | 4 ++-- packages/types/config/index.d.ts | 1 + test/fixtures/with-config/with-config.test.js | 3 ++- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/config/src/config/_common.js b/packages/config/src/config/_common.js index 5cb86f3ea1..b0325c1d1d 100644 --- a/packages/config/src/config/_common.js +++ b/packages/config/src/config/_common.js @@ -1,6 +1,6 @@ import capitalize from 'lodash/capitalize' import env from 'std-env' -import { TARGETS, MODES } from '@nuxt/utils' +import { TARGETS } from '@nuxt/utils' export default () => ({ // Env @@ -17,9 +17,10 @@ export default () => ({ // Rendering ssr: true, - // TODO: remove in Nuxt 3 - // Mode - mode: MODES.universal, + // Mode (deprecated) + mode: undefined, + + // Modern modern: undefined, // Modules diff --git a/packages/config/src/options.js b/packages/config/src/options.js index f5e52afe3c..c980c3363a 100644 --- a/packages/config/src/options.js +++ b/packages/config/src/options.js @@ -97,6 +97,18 @@ export function getNuxtConfig (_options) { options.target = 'server' } + // Deprecate Mode + if (options.mode) { + if ((options.mode === MODES.universal && options.ssr) || (options.mode === MODES.spa && !options.ssr)) { + consola.warn('`mode` option is deprecated. You can safely remove it from `nuxt.config`') + } else { + consola.warn('`mode` option is deprecated. Please use `ssr: true` for universal mode or `ssr: false` for spa mode and remove `mode` from `nuxt.config`') + } + } else { + // For backward compat we need default value + options.mode = MODES.universal + } + // SSR root option if (options.ssr === false) { options.mode = MODES.spa diff --git a/packages/config/test/config/__snapshots__/index.test.js.snap b/packages/config/test/config/__snapshots__/index.test.js.snap index a37a2ba91c..75adf15323 100644 --- a/packages/config/test/config/__snapshots__/index.test.js.snap +++ b/packages/config/test/config/__snapshots__/index.test.js.snap @@ -241,7 +241,7 @@ Object { "server_error": "Server error", "server_error_details": "An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.", }, - "mode": "universal", + "mode": undefined, "modern": undefined, "modes": Object { "spa": Object { @@ -617,7 +617,7 @@ Object { "server_error": "Server error", "server_error_details": "An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.", }, - "mode": "universal", + "mode": undefined, "modern": undefined, "modes": Object { "spa": Object { diff --git a/packages/types/config/index.d.ts b/packages/types/config/index.d.ts index cf6d9a76b3..980a518168 100644 --- a/packages/types/config/index.d.ts +++ b/packages/types/config/index.d.ts @@ -50,6 +50,7 @@ export interface NuxtOptions extends Configuration { layoutTransition: Transition loading: NuxtOptionsLoading | false | string loadingIndicator: NuxtOptionsLoadingIndicator | false | string + /** @deprecated Use ssr option instead */ mode: 'spa' | 'universal' target: 'server' | 'static' modern: 'client' | 'server' | boolean diff --git a/test/fixtures/with-config/with-config.test.js b/test/fixtures/with-config/with-config.test.js index 84652276cb..7923686eb6 100644 --- a/test/fixtures/with-config/with-config.test.js +++ b/test/fixtures/with-config/with-config.test.js @@ -14,10 +14,11 @@ const hooks = [ describe('with-config', () => { buildFixture('with-config', () => { - expect(consola.warn).toHaveBeenCalledTimes(7) + expect(consola.warn).toHaveBeenCalledTimes(8) expect(consola.fatal).toHaveBeenCalledTimes(0) expect(consola.warn.mock.calls).toMatchObject([ ['`router.scrollBehavior` property is deprecated in favor of using `~/app/router.scrollBehavior.js` file, learn more: https://nuxtjs.org/api/configuration-router#scrollbehavior'], + ['`mode` option is deprecated. Please use `ssr: true` for universal mode or `ssr: false` for spa mode and remove `mode` from `nuxt.config`'], ['Unknown mode: unknown. Falling back to universal'], ['Invalid plugin mode (server/client/all): \'abc\'. Falling back to \'all\''], [{