html-minifier
html-minifier copied to clipboard
includeAutoGeneratedTags not working properly
Here is a test case:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div>
<header>
</header>
When I minify it with includeAutoGeneratedTags
set to false
, I get the following output <!doctype html><div><header></header></div>
. As you can see, a closing </div>
is added. It is a huge problem when minifying template files.
In case it is relevant, here are all the options which I have (although I did try to change them and they did not influence current behaviour with div
):
{
"caseSensitive": false,
"collapseBooleanAttributes": true,
"collapseInlineTagWhitespace": true,
"collapseWhitespace": true,
"conservativeCollapse": false,
"decodeEntities": true,
"html5": true,
"includeAutoGeneratedTags": false,
"keepClosingSlash": false,
"maxLineLength": 0,
"minifyCSS": true,
"minifyJS": true,
"preserveLineBreaks": false,
"preventAttributesEscaping": false,
"processConditionalComments": true,
"processScripts": [
"text/html",
"application/ld+json"
],
"removeAttributeQuotes": false,
"removeComments": true,
"removeEmptyAttributes": true,
"removeEmptyElements": false,
"removeOptionalTags": true,
"removeRedundantAttributes": true,
"removeScriptTypeAttributes": true,
"removeStyleLinkTypeAttributes": true,
"removeTagWhitespace": false,
"sortAttributes": true,
"sortClassName": true,
"trimCustomFragments": true,
"useShortDoctype": true
}
I thought that #540 was supposed to add an option to remove such behavior. Is there any other way yo turn off such additions of closing tags?
+1
@onebelarusianguy you might want to try the latest version.
I can not reproduce it in my fork and also not in the original project:
@DanielRuf correct, but if you'd use closed tags </div></body></html>
in template file like footer.php, minifier just skip them which lead to invalid markup. But I already solved this issue wrapping closed tags in <!-- htmlmin:ignore -->
construction.
In my opinion the htmlmin:ignore
comment to ignore such markup is the correct approach for this case.
There were similar issues about this and that is a valid solution.