pre-fetch-plugin
Version:
A pre-fetch plugin for Vite and Webpack
21 lines (20 loc) • 829 B
JavaScript
import { sources } from 'webpack';
import { injectScriptToHtml } from '../core/utils';
export class WebpackPreFetchPlugin {
constructor(options) {
this.options = options;
}
apply(compiler) {
compiler.hooks.emit.tapAsync('PreFetchPlugin', async (compilation, callback) => {
for (const filename in compilation.assets) {
if (filename.endsWith('.html')) {
// 将 source 转换为字符串
const source = compilation.assets[filename].source().toString();
const updatedSource = await injectScriptToHtml(source, this.options.options);
compilation.assets[filename] = new sources.RawSource(updatedSource);
}
}
callback();
});
}
}