UNPKG

unplugin-fonts

Version:
39 lines (38 loc) 1.57 kB
import { getHeadLinkTags } from "./loaders/index.mjs"; import { customVirtualModule } from "./loaders/custom.mjs"; import { generateAllFallbacks, hasFallbacks } from "./loaders/fallback.mjs"; import { fontsourceImports } from "./loaders/fontsource.mjs"; import src_default from "./index.mjs"; import { addTemplate, addVitePlugin, addWebpackPlugin, defineNuxtModule } from "@nuxt/kit"; //#region src/nuxt.ts var nuxt_default = defineNuxtModule({ meta: { name: "unplugin-fonts", configKey: "unfonts" }, setup(options, nuxt) { if ("fontsource" in options || "custom" in options || hasFallbacks(options)) { nuxt.options.css ||= []; if (options.fontsource) for (const src of fontsourceImports(options.fontsource)) nuxt.options.css.push(src); if (options.custom) options.custom.prefetchPrefix = nuxt.options.app.buildAssetsDir; nuxt.options.css.push("#build/unfonts.css"); addTemplate({ filename: "unfonts.css", getContents: async () => { let css = options.custom ? customVirtualModule(options.custom, nuxt.options.rootDir) : ""; const fallbackCSS = await generateAllFallbacks(options, nuxt.options.rootDir); if (fallbackCSS) css += `\n${fallbackCSS}`; return css; } }); } const links = getHeadLinkTags(options); nuxt.options.app.head ||= {}; nuxt.options.app.head.link ||= []; for (const link of links) nuxt.options.app.head.link.push({ ...link.attrs }); addWebpackPlugin(src_default.webpack(options)); addVitePlugin(src_default.vite(options)); } }); //#endregion export { nuxt_default as default };