This commit is contained in:
48
frontend/vite-plugins/inject-preload.ts
Normal file
48
frontend/vite-plugins/inject-preload.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import { IndexHtmlTransformContext, Plugin } from "vite";
|
||||
// eslint-disable-next-line import/no-unresolved
|
||||
import UnpluginInjectPreload from "unplugin-inject-preload/vite";
|
||||
import { basename } from "node:path";
|
||||
export function injectPreload(): Plugin {
|
||||
const base = UnpluginInjectPreload({
|
||||
files: [
|
||||
{
|
||||
outputMatch: /css\/.*\.css$/,
|
||||
attributes: {
|
||||
as: "style",
|
||||
type: "text/css",
|
||||
rel: "preload",
|
||||
crossorigin: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
outputMatch: /.*\.woff2$/,
|
||||
attributes: {
|
||||
as: "font",
|
||||
type: "font/woff2",
|
||||
rel: "preload",
|
||||
crossorigin: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
injectTo: "head-prepend",
|
||||
}) as {
|
||||
name: string;
|
||||
vite: {
|
||||
transformIndexHtml: {
|
||||
handler: (html: string, ctx: IndexHtmlTransformContext) => string;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
return {
|
||||
name: base.name,
|
||||
...base.vite,
|
||||
transformIndexHtml(html, ctx) {
|
||||
//only add preload to the index.html file
|
||||
if (basename(ctx.filename) !== "index.html") {
|
||||
return html;
|
||||
}
|
||||
return base.vite.transformIndexHtml.handler(html, ctx);
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user