@web/rollup-plugin-html
Version:
Rollup plugin for bundling HTML files
36 lines • 1.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.injectBundles = exports.createLoadScript = void 0;
const parse5_utils_1 = require("@web/parse5-utils");
const utils_js_1 = require("../utils.js");
function createLoadScript(src, format, attributes) {
const attributesObject = {};
if (attributes) {
for (const attribute of attributes) {
attributesObject[attribute.name] = attribute.value;
}
}
if (['es', 'esm', 'module'].includes(format)) {
return (0, parse5_utils_1.createScript)(Object.assign({ type: 'module', src }, attributesObject));
}
if (['system', 'systemjs'].includes(format)) {
return (0, parse5_utils_1.createScript)({}, `System.import(${JSON.stringify(src)});`);
}
return (0, parse5_utils_1.createScript)({ src, defer: '' });
}
exports.createLoadScript = createLoadScript;
function injectBundles(document, entrypointBundles) {
const body = (0, parse5_utils_1.findElement)(document, e => (0, parse5_utils_1.getTagName)(e) === 'body');
if (!body) {
throw new Error('Missing body in HTML document.');
}
for (const { options, entrypoints } of Object.values(entrypointBundles)) {
if (!options.format)
throw (0, utils_js_1.createError)('Missing output format.');
for (const entrypoint of entrypoints) {
(0, parse5_utils_1.appendChild)(body, createLoadScript(entrypoint.importPath, options.format, entrypoint.attributes));
}
}
}
exports.injectBundles = injectBundles;
//# sourceMappingURL=injectBundles.js.map
;