unplugin-fonts
Version:
Universal Webfont loader
39 lines (38 loc) • 1.57 kB
JavaScript
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 };