Fix style attr minification
This commit is contained in:
parent
d20d6c6a18
commit
315ed269a7
|
@ -66,7 +66,7 @@ const htmlMinifierCfg = {
|
|||
};
|
||||
|
||||
module.exports = {
|
||||
'@minify-html/js': (_, buffer) => minifyHtml.minify(Buffer.from(buffer), minifyHtmlCfg),
|
||||
'@minify-html/js': (_, buffer) => minifyHtml.minify(buffer, minifyHtmlCfg),
|
||||
'html-minifier': content => htmlMinifier.minify(content, htmlMinifierCfg),
|
||||
'minimize': testJsAndCssMinification
|
||||
? (content) => new minimize({
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@types/node": "^14.0.5",
|
||||
"@wzlin/html-data": "^2020103004.0.1",
|
||||
"@wzlin/html-data": "^2021080714.0.0",
|
||||
"prettier": "2.3.2",
|
||||
"ts-node": "^8.10.1",
|
||||
"typescript": "^3.7.4",
|
||||
|
|
|
@ -217,14 +217,26 @@ pub fn minify_attr(
|
|||
|
||||
#[cfg(feature = "js-esbuild")]
|
||||
if name == b"style" && cfg.minify_css {
|
||||
let mut value_raw_min = Vec::new();
|
||||
let mut value_raw_wrapped = Vec::with_capacity(value_raw.len() + 3);
|
||||
// TODO This isn't safe for invalid input e.g. `a}/*`.
|
||||
value_raw_wrapped.extend_from_slice(b"x{");
|
||||
value_raw_wrapped.extend_from_slice(&value_raw);
|
||||
value_raw_wrapped.push(b'}');
|
||||
let mut value_raw_wrapped_min = Vec::with_capacity(value_raw_wrapped.len());
|
||||
minify_using_esbuild(
|
||||
&mut value_raw_min,
|
||||
&value_raw,
|
||||
&mut value_raw_wrapped_min,
|
||||
&value_raw_wrapped,
|
||||
&MINIFY_CSS_TRANSFORM_OPTIONS.clone(),
|
||||
None,
|
||||
);
|
||||
value_raw = value_raw_min;
|
||||
// If input was invalid, wrapper syntax may not exist anymore.
|
||||
if value_raw_wrapped_min.starts_with(b"x{") {
|
||||
value_raw_wrapped_min.drain(0..2);
|
||||
};
|
||||
if value_raw_wrapped_min.ends_with(b"}") {
|
||||
value_raw_wrapped_min.pop();
|
||||
};
|
||||
value_raw = value_raw_wrapped_min;
|
||||
}
|
||||
|
||||
if (value_raw.is_empty() && redundant_if_empty)
|
||||
|
|
|
@ -603,7 +603,9 @@ fn test_css_minification() {
|
|||
);
|
||||
// `style` attributes.
|
||||
eval_with_css_min(
|
||||
br#"<div style="div { color: yellow }"></div>"#,
|
||||
br#"<div style=div{color:#ff0}></div>"#,
|
||||
br#"<div style="color: yellow;"></div>"#,
|
||||
br#"<div style=color:#ff0></div>"#,
|
||||
);
|
||||
// `style` attributes are removed if fully minified away.
|
||||
eval_with_css_min(br#"<div style=" /* */ "></div>"#, br#"<div></div>"#);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue