Skip to content

Commit

Permalink
use different placeholder for CSS minification
Browse files Browse the repository at this point in the history
  • Loading branch information
koddsson committed Apr 25, 2024
1 parent 5d4194f commit 21da6de
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -294,32 +294,48 @@ export function minifyHTMLLiterals(
templates.forEach((template) => {
const minifyHTML = shouldMinify(template);
const minifyCSS = !!strategy.minifyCSS && shouldMinifyCSS(template);
if (minifyHTML || minifyCSS) {
if (minifyHTML) {
const placeholder = strategy.getPlaceholder(template.parts);
if (validate) {
validate.ensurePlaceholderValid(placeholder);
}

const combined = strategy.combineHTMLStrings(template.parts, placeholder);
let min: string;
if (minifyCSS) {
const minifyCSSOptions = (
(options as DefaultOptions).minifyOptions || {}
).minifyCSS;
if (typeof minifyCSSOptions === 'function') {
min = minifyCSSOptions(combined);
} else if (minifyCSSOptions === false) {
min = combined;
} else {
const cssOptions =
typeof minifyCSSOptions === 'object' ? minifyCSSOptions : undefined;
min = strategy.minifyCSS!(combined, cssOptions);
const min = strategy.minifyHTML(combined, options.minifyOptions);

const minParts = strategy.splitHTMLByPlaceholder(min, placeholder);
if (validate) {
validate.ensureHTMLPartsValid(template.parts, minParts);
}

template.parts.forEach((part, index) => {
if (part.start < part.end) {
// Only overwrite if the literal part has text content
ms.overwrite(part.start, part.end, minParts[index]);
}
});
} else if (minifyCSS) {
const placeholder = 'TEMPLATE_EXPRESSION';
if (validate) {
validate.ensurePlaceholderValid(placeholder);
}

const combined = strategy.combineHTMLStrings(template.parts, placeholder);
let min: string;
const minifyCSSOptions = ((options as DefaultOptions).minifyOptions || {})
.minifyCSS;
if (typeof minifyCSSOptions === 'function') {
min = minifyCSSOptions(combined);
} else if (minifyCSSOptions === false) {
min = combined;
} else {
min = strategy.minifyHTML(combined, options.minifyOptions);
const cssOptions =
typeof minifyCSSOptions === 'object' ? minifyCSSOptions : undefined;
min = strategy.minifyCSS!(combined, cssOptions);
}

const minParts = strategy.splitHTMLByPlaceholder(min, placeholder);

if (validate) {
validate.ensureHTMLPartsValid(template.parts, minParts);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,11 @@ describe('minify-html-literals', () => {
font-size: 24px;
}
\${extra}
.footer {
margin: \${marginSize2} 0;
}
\${extra}
\`;
}
Expand Down Expand Up @@ -131,7 +131,7 @@ describe('minify-html-literals', () => {
}
function taggedCSSMinify(extra) {
return css\`.heading{font-size:24px}\${extra}\`;
return css\`.heading{font-size:24px}\${extra} .footer{margin:\${marginSize2} 0}\`;
}
function cssProperty(property) {
Expand Down

0 comments on commit 21da6de

Please sign in to comment.