From 91b2f08470e0cfb09072b9f7ede418339261c6d5 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sat, 4 Jun 2022 17:13:52 +0800 Subject: [PATCH] fix(nuxt): avoid preset duplication, close #1054 --- packages/core/src/types.ts | 1 + packages/nuxt/src/index.ts | 4 ++-- packages/shared-integration/src/context.ts | 11 +++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index e5fb41d0ac..76d670d667 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -545,6 +545,7 @@ export interface ResolvedConfig extends Omit< RequiredByKey, 'rules' | 'shortcuts' | 'autocomplete' > { + presets: Preset[] shortcuts: Shortcut[] variants: VariantObject[] preprocess: Preprocessor[] diff --git a/packages/nuxt/src/index.ts b/packages/nuxt/src/index.ts index 8ef1c6e320..b13c6528bc 100644 --- a/packages/nuxt/src/index.ts +++ b/packages/nuxt/src/index.ts @@ -55,12 +55,12 @@ export default defineNuxtModule({ extendViteConfig((config) => { config.plugins = config.plugins || [] - config.plugins.unshift(...VitePlugin(options)) + config.plugins.unshift(...VitePlugin({}, options)) }) extendWebpackConfig((config) => { config.plugins = config.plugins || [] - config.plugins.unshift(WebpackPlugin(options)) + config.plugins.unshift(WebpackPlugin({}, options)) }) }, }) diff --git a/packages/shared-integration/src/context.ts b/packages/shared-integration/src/context.ts index 7513627a29..11c9c9a572 100644 --- a/packages/shared-integration/src/context.ts +++ b/packages/shared-integration/src/context.ts @@ -39,6 +39,17 @@ export function createContext = UserConfig>( await Promise.all(modules.map((code, id) => uno.applyExtractors(code, id, tokens))) invalidate() + // check preset duplication + const presets = new Set() + uno.config.presets.forEach((i) => { + if (!i.name) + return + if (presets.has(i.name)) + console.warn(`[unocss] duplication of preset ${i.name} found, there might be something wrong with your config.`) + else + presets.add(i.name) + }) + return result }