nuxt-svg-icons
Version:
A module for Nuxt 3 that allows you to use your own SVG icons as a component, url or raw text.
35 lines (32 loc) • 980 B
JavaScript
import { fileURLToPath } from 'node:url';
import { defineNuxtModule, createResolver, addVitePlugin, addComponent } from '@nuxt/kit';
import { svg4VuePlugin } from 'vite-plugin-svg4vue';
const module = defineNuxtModule({
meta: {
name: "nuxt-svg-icons",
configKey: "nuxtSvgIcons",
compatibility: {
nuxt: ">=3.0.0"
}
},
defaults: {
svg4vue: {
assetsDirName: "assets/icons"
},
enableNuxtSvgIconComponent: true
},
setup(moduleOptions, nuxt) {
const { resolve } = createResolver(import.meta.url);
const runtimeDir = fileURLToPath(new URL("./runtime", import.meta.url));
nuxt.options.build.transpile.push(runtimeDir);
addVitePlugin(svg4VuePlugin(moduleOptions.svg4vue));
if (moduleOptions.enableNuxtSvgIconComponent) {
addComponent({
name: "nuxt-svg-icon",
global: true,
filePath: resolve("./runtime/components/nuxt-svg-icon.vue")
});
}
}
});
export { module as default };