pre-fetch-plugin
Version:
A pre-fetch plugin for Vite and Webpack
21 lines (20 loc) • 778 B
JavaScript
import path from 'path';
import esbuild from 'esbuild';
export async function buildScript() {
const scriptPath = path.resolve(__dirname, '../script/pre-fetch-script.ts');
const result = await esbuild.build({
entryPoints: [scriptPath],
write: false,
bundle: true,
minify: true,
format: 'iife',
target: 'es2018',
});
return result.outputFiles[0].text;
}
export async function injectScriptToHtml(html, options) {
const script = await buildScript();
const optionsScript = `<script>window.__PRE_FETCH_OPTIONS__ = ${JSON.stringify(options)};</script>`;
const asyncScript = `<script async>${script}</script>`;
return html.replace('</head>', `${optionsScript}${asyncScript}</head>`);
}