UNPKG

infly-libs

Version:

工具组件库

36 lines (31 loc) 1.2 kB
// build/InlineRuntimePlugin.js class InlineRuntimePlugin { apply(compiler) { compiler.hooks.compilation.tap("InlineRuntimePlugin", (compilation) => { const HtmlWebpackPlugin = compiler.options.plugins.find( (plugin) => plugin.constructor && plugin.constructor.name === "HtmlWebpackPlugin" )?.constructor; if (!HtmlWebpackPlugin) return; HtmlWebpackPlugin.getHooks(compilation).alterAssetTagGroups.tap("InlineRuntimePlugin", (assets) => { assets.headTags = this.inlineRuntime(assets.headTags, compilation.assets); assets.bodyTags = this.inlineRuntime(assets.bodyTags, compilation.assets); }); }); } inlineRuntime(tags, assets) { return tags.map((tag) => { if (tag.tagName === "script" && tag.attributes?.src && /runtime\..*\.js$/.test(tag.attributes.src)) { const filename = tag.attributes.src.replace(/^\//, ""); if (assets[filename]) { return { tagName: "script", innerHTML: assets[filename].source(), closeTag: true }; } } return tag; }); } } module.exports = InlineRuntimePlugin;