gulp-html-minimizer
v2.0.1
Published
Gulp plugin to minify HTML using the HTMLMinifier minifier.
Downloads
65
Maintainers
Readme
gulp-html-minimizer
Gulp plugin to minify HTML using the actively maintained HTMLMinifier fork.
Install
npm i --save-dev gulp-html-minimizer
Usage
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/"));
}
Options Quick Reference
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
|
Additional info
For information regarding sorting attributes / style classes, ignoring chunks of markup, preserving SVG tags & working with invalid markup see HTMLMinifier fork