diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts index 5520690..b34fe6e 100644 --- a/docs/.vitepress/theme/index.ts +++ b/docs/.vitepress/theme/index.ts @@ -1,4 +1,5 @@ -import Theme from 'vitepress/theme' +import type { Theme } from 'vitepress' +import DefaultTheme from 'vitepress/theme' import { inBrowser } from 'vitepress' import VuetifyLayout from './VuetifyLayout.vue' @@ -11,6 +12,6 @@ if (inBrowser) import('./pwa') export default { - ...Theme, + extends: DefaultTheme, Layout: VuetifyLayout, -} +} satisfies Theme diff --git a/docs/guide/globals/directives.md b/docs/guide/globals/directives.md index 7258738..42bfb20 100644 --- a/docs/guide/globals/directives.md +++ b/docs/guide/globals/directives.md @@ -8,6 +8,10 @@ By default, the module will not register any Vuetify directive. If you need to r You can register all the directives or only the ones you need: check the [directives definition](https://github.com/userquin/vuetify-nuxt-module/blob/main/src/types.ts#L91-L92). +## Ignore directives + +If you want to ignore some directives, you can use the `moduleOptions.ignoreDirectives` option. The module will configure the Vuetify Vite Plugin to [ignore](https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#ignoring-components-or-directives) the directives you specify. + ## Examples ### Registering all the directives diff --git a/docs/guide/index.md b/docs/guide/index.md index 147bd62..d1f0a48 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -124,6 +124,12 @@ export interface MOptions { * @default true */ includeTransformAssetsUrls?: boolean | Record + /** + * Directives Vuetify Vite Plugin should ignore. + * + * @since v0.15.1 + */ + ignoreDirectives?: DirectiveName | DirectiveName[] /** * Vuetify SSR client hints. * diff --git a/src/types.ts b/src/types.ts index 9fc8bdd..2563a79 100644 --- a/src/types.ts +++ b/src/types.ts @@ -255,6 +255,12 @@ export interface MOptions { * @default true */ includeTransformAssetsUrls?: boolean | Record + /** + * Directives Vuetify Vite Plugin should ignore. + * + * @since v0.15.1 + */ + ignoreDirectives?: DirectiveName | DirectiveName[] /** * Vuetify SSR client hints. * diff --git a/src/utils/configure-vite.ts b/src/utils/configure-vite.ts index 1c003af..a2a5bc1 100644 --- a/src/utils/configure-vite.ts +++ b/src/utils/configure-vite.ts @@ -1,5 +1,6 @@ import type { Nuxt } from '@nuxt/schema' import defu from 'defu' +import type { Options } from '@vuetify/loader-shared' import { vuetifyStylesPlugin } from '../vite/vuetify-styles-plugin' import { vuetifyConfigurationPlugin } from '../vite/vuetify-configuration-plugin' import { vuetifyIconsPlugin } from '../vite/vuetify-icons-configuration-plugin' @@ -41,7 +42,17 @@ export function configureVite(configKey: string, nuxt: Nuxt, ctx: VuetifyNuxtCon viteInlineConfig.vue.template.transformAssetUrls = transformAssetUrls } - viteInlineConfig.plugins.push(vuetifyImportPlugin({})) + // fix #236 + const vuetifyImportOptions: Options = {} + const ignoreDirectives = ctx.moduleOptions.ignoreDirectives + if (ignoreDirectives) { + const ignore = Array.isArray(ignoreDirectives) + ? ignoreDirectives + : [ignoreDirectives] + vuetifyImportOptions.autoImport = { ignore } + } + + viteInlineConfig.plugins.push(vuetifyImportPlugin(vuetifyImportOptions)) viteInlineConfig.plugins.push(vuetifyStylesPlugin({ styles: ctx.moduleOptions.styles }, ctx.logger)) viteInlineConfig.plugins.push(vuetifyConfigurationPlugin(ctx)) viteInlineConfig.plugins.push(vuetifyIconsPlugin(ctx)) diff --git a/src/vite/vuetify-import-plugin.ts b/src/vite/vuetify-import-plugin.ts index 399a4f0..cc6cc5d 100644 --- a/src/vite/vuetify-import-plugin.ts +++ b/src/vite/vuetify-import-plugin.ts @@ -1,7 +1,8 @@ import { extname } from 'node:path' import { pathToFileURL } from 'node:url' import type { Plugin } from 'vite' -import { type Options, generateImports } from '@vuetify/loader-shared' +import type { Options } from '@vuetify/loader-shared' +import { generateImports } from '@vuetify/loader-shared' import { parseQuery, parseURL } from 'ufo' import { isAbsolute } from 'pathe' import destr from 'destr'