vite-plugin-webfont-dl
Version:
Vite plugin for downloading and injecting webfonts
118 lines (107 loc) • 3.12 kB
TypeScript
import { Plugin } from 'vite';
import { AxiosProxyConfig } from 'axios';
interface Options {
/**
* Inject critical css between style tag.
* default: `true`
* */
injectAsStyleTag?: boolean;
/**
* Minify CSS code during build.
* default: value of `build.minify`
* */
minifyCss?: boolean;
/**
* Embed base64-encoded fonts into css.
* In some cases can cause filesize increase if css containes multiple references to same font file.
* default: `false`
* */
embedFonts?: boolean;
/**
* Load stylesheet asynchronously (using `media="print"`).
* Works only with `injectAsStyleTag:false`).
* default: `true`
* */
async?: boolean;
/**
* Persistently store downloaded css and font files in local file cache.
* If set to `false` the existing cache will be deleted.
* default: `true`
* */
cache?: boolean;
/**
* You can set proxy for network requests (using axios).
* default: `false`
*/
proxy?: false | AxiosProxyConfig;
/**
* Moves downloaded font files to separate subfolder
* default: `''`
*/
assetsSubfolder?: string;
/**
* Throw on error to make Vite build fail.
* default: `false`
*/
throwError?: boolean;
}
/**
* A, Build:
* 1. [hook] configResolved
* ↳ setBase()
* ↳ setAssetsDir()
* ↳ setMinifyCss()
* ↳ setResolvedLogger()
*
* 2. [hook] transformIndexHtml
* ↳ htmlFiles collect
*
* 3. [hook] generateBundle
* ↳ setEmitFileFunction()
* ↳ setGetFilenameFunction()
* ↳ clearWebfontUrlsHtml()
* ↳ collectWebfontsFromHtml()
* ↳ collectWebfontsFromBundleCss()
* ↳ downloadWebfontCss()
* ↳ parseFontDefinitions()
* ↳ downloadFonts()
* ↳ replaceFontUrls()
* ↳ saveCss()
* ↳ removeTagsFromHtml()
* ↳ injectToHtml()
*
*
* B, Dev server:
* 1. [hook] configResolved
* ↳ setBase()
* ↳ setAssetsDir()
* ↳ setMinifyCss()
* ↳ setResolvedLogger()
*
* 2. [hook] configureServer
* ↳ setIsDevServer(true)
* ↳ setAssetsDir('@webfonts')
* ↳ getDevServerMiddlewareCss()
* ↳ getDevServerMiddlewareGeneral()
*
* 3. [hook] transformIndexHtml
* ↳ clearWebfontUrlsHtml()
* ↳ collectWebfontsFromHtml()
* ↳ removeTagsFromHtml()
* ↳ injectToHtml()
*
* 4. [middleware] css (@webfonts/webfonts.css)
* ↳ loadDevServerFonts()
* ↳ downloadWebfontCss()
* ↳ parseFontDefinitions()
* ↳ replaceFontUrls()
* ↳ fontUrlsDevMap fill
* ↳ response: css (text)
*
* 5. [middleware] font (assets/xyz.woff2)
* ↳ check fontUrlsDevMap
* ↳ downloadFont()
* ↳ response: font (binary)
*/
declare function viteWebfontDownload(webfontUrls?: string | string[], options?: Options): Plugin;
export { viteWebfontDownload as ViteWebfontDownload, viteWebfontDownload as default, viteWebfontDownload as viteWebfontDl, viteWebfontDownload, viteWebfontDownload as webfontDl, viteWebfontDownload as webfontDownload };