UNPKG

htmlnano

Version:

Modular HTML minifier, built on top of the PostHTML

38 lines (37 loc) 1.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = mergeStyles; var _helpers = require("../helpers.cjs"); /* Merge multiple <style> into one */ function mergeStyles(tree) { const styleNodes = {}; tree.match({ tag: 'style' }, node => { const nodeAttrs = node.attrs || {}; // Skip <style scoped></style> // https://developer.mozilla.org/en/docs/Web/HTML/Element/style // // Also skip SRI, reasons are documented in "minifyJs" module if ('scoped' in nodeAttrs || 'integrity' in nodeAttrs) { return node; } if ((0, _helpers.isAmpBoilerplate)(node)) { return node; } const styleType = nodeAttrs.type || 'text/css'; const styleMedia = nodeAttrs.media || 'all'; const styleKey = styleType + '_' + styleMedia; if (styleNodes[styleKey]) { const styleContent = (node.content || []).join(' '); styleNodes[styleKey].content.push(' ' + styleContent); return ''; } node.content = node.content || []; styleNodes[styleKey] = node; return node; }); return tree; }