Gulp plugin to minify HTML using the HTMLMinifier minifier.
npm install gulp-html-minimizer!Build !Dependencies !NPM Version
Gulp plugin to minify HTML using the actively maintained HTMLMinifier fork.
npm i --save-dev gulp-html-minimizer
``js
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. '
) | [ ] |
| 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. ) | [ ] |
| 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. , {{ ... }}, 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