From fe4b71132ea65d0cd66e0af8c7d92d67eb8d411b Mon Sep 17 00:00:00 2001 From: Sukka Date: Fri, 22 Jul 2022 01:53:41 +0800 Subject: [PATCH] fix: correct the next config optimizeCss type (#38879) `experimental.optimizeCss` from `next.config.js` can be an object containing the critters' option: https://github.com/vercel/next.js/blob/70a53e0789c7e361f12139db6e124a5bb1d2afd9/packages/next/server/post-process.ts#L224-L232 The PR corrects the ajv schema and the type definition of `experimental.optimizeCss`. --- packages/next/server/config-schema.ts | 9 ++++++++- packages/next/server/config-shared.ts | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/next/server/config-schema.ts b/packages/next/server/config-schema.ts index f9d18748f444..841a57da63fa 100644 --- a/packages/next/server/config-schema.ts +++ b/packages/next/server/config-schema.ts @@ -333,7 +333,14 @@ const configSchema = { type: 'boolean', }, optimizeCss: { - type: 'boolean', + oneOf: [ + { + type: 'boolean', + }, + { + type: 'object', + }, + ] as any, }, outputFileTracingRoot: { minLength: 1, diff --git a/packages/next/server/config-shared.ts b/packages/next/server/config-shared.ts index a1dbbb5110e0..ff38d8e304ca 100644 --- a/packages/next/server/config-shared.ts +++ b/packages/next/server/config-shared.ts @@ -94,7 +94,10 @@ export interface ExperimentalConfig { isrFlushToDisk?: boolean workerThreads?: boolean pageEnv?: boolean - optimizeCss?: boolean + // optimizeCss can be boolean or critters' option object + // Use Record as critters doesn't export its Option type + // https://github.com/GoogleChromeLabs/critters/blob/a590c05f9197b656d2aeaae9369df2483c26b072/packages/critters/src/index.d.ts + optimizeCss?: boolean | Record nextScriptWorkers?: boolean scrollRestoration?: boolean externalDir?: boolean