Gulp plugin to minify HTML using the actively maintained HTMLMinifier fork.
npm i --save-dev gulp-html-minimizer
const gulp = require("gulp");
const htmlMinimizer = require("gulp-html-minimizer");
export function minifyHTML() {
return gulp
.src("./src/index.html")
.pipe(
htmlMinimizer({
// Optional option object - See below or HTMLMinifier for options
})
)
.pipe(gulp.dest("./dist/"));
}
Most of the options are disabled by default.
Option | Description | Default |
---|---|---|
skipInvalidFiles |
Files with parsing errors will be skipped, rather than returning an error | undefined (could be true , false ) |
caseSensitive |
Treat attributes in case sensitive manner (useful for custom HTML tags) | false |
collapseBooleanAttributes |
Omit attribute values from boolean attributes | false |
collapseInlineTagWhitespace |
Don't leave any spaces between display:inline; elements when collapsing. Must be used in conjunction with collapseWhitespace=true |
false |
collapseWhitespace |
Collapse white space that contributes to text nodes in a document tree | false |
conservativeCollapse |
Always collapse to 1 space (never remove it entirely). Must be used in conjunction with collapseWhitespace=true |
false |
continueOnParseError |
Handle parse errors instead of aborting. | false |
customAttrAssign |
Arrays of regex'es that allow to support custom attribute assign expressions (e.g. '<div flex?="{{mode != cover}}"></div>' ) |
[ ] |
customAttrCollapse |
Regex that specifies custom attribute to strip newlines from (e.g. /ng-class/ ) |
|
customAttrSurround |
Arrays of regex'es that allow to support custom attribute surround expressions (e.g. <input {{#if value}}checked="checked"{{/if}}> ) |
[ ] |
customEventAttributes |
Arrays of regex'es that allow to support custom event attributes for minifyJS (e.g. ng-click ) |
[ /^on[a-z]{3,}$/ ] |
decodeEntities |
Use direct Unicode characters whenever possible | false |
html5 |
Parse input according to HTML5 specifications | true |
ignoreCustomComments |
Array of regex'es that allow to ignore certain comments, when matched | [ /^!/, /^\s*#/ ] |
ignoreCustomFragments |
Array of regex'es that allow to ignore certain fragments, when matched (e.g. <?php ... ?> , {{ ... }} , etc.) |
[ /<%[\s\S]*?%>/, /<\?[\s\S]*?\?>/ ] |
includeAutoGeneratedTags |
Insert tags generated by HTML parser | true |
keepClosingSlash |
Keep the trailing slash on singleton elements | false |
maxLineLength |
Specify a maximum line length. Compressed output will be split by newlines at valid HTML split-points | |
minifyCSS |
Minify CSS in style elements and style attributes (uses clean-css) | false (could be true , Object , Function(text, type) ) |
minifyJS |
Minify JavaScript in script elements and event attributes (uses Terser) | false (could be true , Object , Function(text, inline) ) |
minifyURLs |
Minify URLs in various attributes (uses relateurl) | false (could be String , Object , Function(text) ) |
preserveLineBreaks |
Always collapse to 1 line break (never remove it entirely) when whitespace between tags include a line break. Must be used in conjunction with collapseWhitespace=true |
false |
preventAttributesEscaping |
Prevents the escaping of the values of attributes | false |
processConditionalComments |
Process contents of conditional comments through minifier | false |
processScripts |
Array of strings corresponding to types of script elements to process through minifier (e.g. text/ng-template , text/x-handlebars-template , etc.) |
[ ] |
quoteCharacter |
Type of quote to use for attribute values (' or ") | |
removeAttributeQuotes |
Remove quotes around attributes when possible | false |
removeComments |
Strip HTML comments | false |
removeEmptyAttributes |
Remove all attributes with whitespace-only values | false (could be true , Function(attrName, tag) ) |
removeEmptyElements |
Remove all elements with empty contents | false |
removeOptionalTags |
Remove optional tags | false |
removeRedundantAttributes |
Remove attributes when value matches default. | false |
removeScriptTypeAttributes |
Remove type="text/javascript" from script tags. Other type attribute values are left intact |
false |
removeStyleLinkTypeAttributes |
Remove type="text/css" from style and link tags. Other type attribute values are left intact |
false |
removeTagWhitespace |
Remove space between attributes whenever possible. Note that this will result in invalid HTML! | false |
sortAttributes |
Sort attributes by frequency | false |
sortClassName |
Sort style classes by frequency | false |
trimCustomFragments |
Trim white space around ignoreCustomFragments . |
false |
useShortDoctype |
Replaces the doctype with the short (HTML5) doctype |
false |
For information regarding sorting attributes / style classes, ignoring chunks of markup, preserving SVG tags & working with invalid markup see HTMLMinifier fork