From efb3c2ea5579415eaa6a95efcaf34285e0754d68 Mon Sep 17 00:00:00 2001 From: userquin Date: Sat, 20 Apr 2024 19:40:56 +0200 Subject: [PATCH] chore: move nuxt config to module --- packages/nuxt/src/index.ts | 23 ++++++++++++++++++++--- packages/nuxt/src/options.ts | 16 +--------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/packages/nuxt/src/index.ts b/packages/nuxt/src/index.ts index 3c9a08a507..167b361c60 100644 --- a/packages/nuxt/src/index.ts +++ b/packages/nuxt/src/index.ts @@ -5,9 +5,9 @@ import { addComponentsDir, addPluginTemplate, defineNuxtModule, extendWebpackCon import WebpackPlugin from '@unocss/webpack' import type { VitePluginConfig } from '@unocss/vite' import VitePlugin from '@unocss/vite' -import type { NuxtPlugin } from '@nuxt/schema' +import type { Nuxt, NuxtPlugin } from '@nuxt/schema' import { loadConfig } from '@unocss/config' -import type { UserConfig } from '@unocss/core' +import type { Preset, UserConfig } from '@unocss/core' import { resolveOptions } from './options' import type { UnocssNuxtOptions } from './types' @@ -36,7 +36,10 @@ export default defineNuxtModule({ }, async setup(options, nuxt) { // preset shortcuts - resolveOptions(nuxt, options) + resolveOptions(options) + + // configure local webfonts preset + configureWebFontPreset(nuxt, options) options.mode ??= 'global' const InjectModes: VitePluginConfig['mode'][] = ['global', 'dist-chunk'] @@ -132,6 +135,20 @@ export default defineNuxtModule({ }, }) +function lookupPreset

>(options: UnocssNuxtOptions, presetName: P['name']) { + const preset: P | undefined = (options.presets || []).flat().find(p => p.name === presetName) as any + return preset +} + +function configureWebFontPreset(nuxt: Nuxt, options: UnocssNuxtOptions) { + const webFontPreset = lookupPreset(options, '@unocss/preset-web-fonts') + if (webFontPreset && !!webFontPreset.options?.downloadLocally) { + webFontPreset.options.downloadLocally = {} + webFontPreset.options.downloadLocally.downloadDir = `${nuxt.options.dir.public}/unocss-fonts` + webFontPreset.options.downloadLocally.downloadBasePath = nuxt.options.app.baseURL + } +} + declare module '@nuxt/schema' { interface NuxtConfig { unocss?: UnocssNuxtOptions diff --git a/packages/nuxt/src/options.ts b/packages/nuxt/src/options.ts index 06eaab1897..9ac1341940 100644 --- a/packages/nuxt/src/options.ts +++ b/packages/nuxt/src/options.ts @@ -5,12 +5,10 @@ import presetWebFonts from '@unocss/preset-web-fonts' import presetTypography from '@unocss/preset-typography' import presetTagify from '@unocss/preset-tagify' import presetWind from '@unocss/preset-wind' -import type { Preset } from '@unocss/core' -import type { Nuxt } from '@nuxt/schema' import { defaultPipelineExclude } from '../../shared-integration/src/defaults' import type { UnocssNuxtOptions } from './types' -export function resolveOptions(nuxt: Nuxt, options: UnocssNuxtOptions) { +export function resolveOptions(options: UnocssNuxtOptions) { if (options.presets == null) { options.presets = [] const presetMap = { @@ -29,13 +27,6 @@ export function resolveOptions(nuxt: Nuxt, options: UnocssNuxtOptions) { } } - const webFontPreset = lookupPreset(options, '@unocss/preset-web-fonts') - if (webFontPreset && !!webFontPreset.options?.downloadLocally) { - webFontPreset.options.downloadLocally = {} - webFontPreset.options.downloadLocally.downloadDir = `${nuxt.options.dir.public}/unocss-fonts` - webFontPreset.options.downloadLocally.downloadBasePath = nuxt.options.app.baseURL - } - options.content ??= {} options.content.pipeline ??= {} if (options.content.pipeline !== false) { @@ -45,8 +36,3 @@ export function resolveOptions(nuxt: Nuxt, options: UnocssNuxtOptions) { options.content.pipeline.exclude.push(/\?macro=true/) } } - -function lookupPreset

>(options: UnocssNuxtOptions, presetName: P['name']) { - const preset: P | undefined = (options.presets || []).flat().find(p => p.name === presetName) as any - return preset -}