diff --git a/README.md b/README.md index fc560d6..c6eaeaa 100644 --- a/README.md +++ b/README.md @@ -250,6 +250,12 @@ The plugin has an API consisting of one required parameter and multiple optional - eot - [ttf2eot](https://github.com/fontello/ttf2eot). - See [webfonts-generator#formatoptions](https://github.com/vusion/webfonts-generator#formatoptions) +### moduleId + +- **type**: `string` +- **description**: Virtual module id which is used by Vite to import the plugin artifacts. E.g. the default value is "vite-svg-2-webfont.css" so "virtual:vite-svg-2-webfont.css" should be imported. +- **default** `'vite-svg-2-webfont.css'` + ## Public API The plugin exposes a public API that can be used inside another plugins using [Rollup inter-plugin communication mechanism](https://rollupjs.org/plugin-development/#inter-plugin-communication). diff --git a/src/index.ts b/src/index.ts index 0e548ae..badca28 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,8 +10,15 @@ import type { PublicApi } from './types/publicApi'; const ac = new AbortController(); const webfontGenerator = promisify(_webfontGenerator); -const VIRTUAL_MODULE_ID = 'virtual:vite-svg-2-webfont.css'; -const RESOLVED_VIRTUAL_MODULE_ID = `\0${VIRTUAL_MODULE_ID}`; +const DEFAULT_MODULE_ID = 'vite-svg-2-webfont.css'; + +function getVirtualModuleId(moduleId: T): `virtual:${T}` { + return `virtual:${moduleId}`; +} + +function getResolvedVirtualModuleId(virtualModuleId: T): `\0${T}` { + return `\0${virtualModuleId}`; +} /** * A Vite plugin that generates a webfont from your SVG icons. @@ -27,6 +34,9 @@ export function viteSvgToWebfont void); let generatedFonts: undefined | Pick, 'generateCss' | 'generateHtml' | T>; const generatedWebfonts: GeneratedWebfont[] = []; + const moduleId = options.moduleId ?? DEFAULT_MODULE_ID; + const virtualModuleId = getVirtualModuleId(moduleId); + const resolvedVirtualModuleId = getResolvedVirtualModuleId(virtualModuleId); const generate = async (updateFiles?: boolean) => { if (updateFiles) { @@ -48,7 +58,7 @@ export function viteSvgToWebfont({ types }: Pick, 'types'>): T[] {