Enable minify HTML output for Kirby 3 and 4.
composer require afbora/kirby-minify-html
git submodule add https://github.com/afbora/kirby-minify-html.git site/plugins/kirby-minify-html
The default values of the package are:
Option | Default | Values | Description |
---|---|---|---|
afbora.kirby-minify-html.enabled | true | boolean | Enable/disable minify |
afbora.kirby-minify-html.options | [] | array | Minify options * |
Option | Description |
---|---|
doOptimizeViaHtmlDomParser | optimize html via "HtmlDomParser()" |
doRemoveComments | remove default HTML comments (depends on "doOptimizeViaHtmlDomParser(true)") |
doSumUpWhitespace | sum-up extra whitespace from the Dom (depends on "doOptimizeViaHtmlDomParser(true)") |
doRemoveWhitespaceAroundTags | remove whitespace around tags (depends on "doOptimizeViaHtmlDomParser(true)") |
doOptimizeAttributes | optimize html attributes (depends on "doOptimizeViaHtmlDomParser(true)") |
doRemoveHttpPrefixFromAttributes | remove optional "http:"-prefix from attributes (depends on "doOptimizeAttributes(true)") |
doRemoveHttpsPrefixFromAttributes | remove optional "https:"-prefix from attributes (depends on "doOptimizeAttributes(true)") |
doKeepHttpAndHttpsPrefixOnExternalAttributes | keep "http:"- and "https:"-prefix for all external links |
doMakeSameDomainsLinksRelative | make some links relative, by removing the domain from attributes |
doRemoveDefaultAttributes | remove defaults (depends on "doOptimizeAttributes(true)" |
doRemoveDeprecatedAnchorName | remove deprecated anchor-jump (depends on "doOptimizeAttributes(true)") |
doRemoveDeprecatedScriptCharsetAttribute | remove deprecated charset-attribute - the browser will use the charset from the HTTP-Header, anyway (depends on "doOptimizeAttributes(true)") |
doRemoveDeprecatedTypeFromScriptTag | remove deprecated script-mime-types (depends on "doOptimizeAttributes(true)") |
doRemoveDeprecatedTypeFromStylesheetLink | remove "type=text/css" for css links (depends on "doOptimizeAttributes(true)") |
doRemoveDeprecatedTypeFromStyleAndLinkTag | remove "type=text/css" from all links and styles |
doRemoveDefaultMediaTypeFromStyleAndLinkTag | remove "media="all" from all links and styles |
doRemoveDefaultTypeFromButton | remove type="submit" from button tags |
doRemoveEmptyAttributes | remove some empty attributes (depends on "doOptimizeAttributes(true)") |
doRemoveValueFromEmptyInput | remove 'value=""' from empty (depends on "doOptimizeAttributes(true)") |
doSortCssClassNames | sort css-class-names, for better gzip results (depends on "doOptimizeAttributes(true)") |
doSortHtmlAttributes | sort html-attributes, for better gzip results (depends on "doOptimizeAttributes(true)") |
doRemoveSpacesBetweenTags | remove more (aggressive) spaces in the dom (disabled by default) |
doRemoveOmittedQuotes | remove quotes e.g. class="lall" => class=lall |
doRemoveOmittedHtmlTags | remove ommitted html tags e.g. <p>lall</p> => <p>lall |
All the values can be updated in the config.php
file.
You can get detailed information from HtmlMin
library:
https://github.com/voku/HtmlMin#options
Inline css, inline js, conditional comments are still protected, no matter what settings you use.
return [
'afbora.kirby-minify-html.enabled' => true,
'afbora.kirby-minify-html.options' => [
'doOptimizeViaHtmlDomParser' => true,
'doRemoveSpacesBetweenTags' => false,
'doMakeSameDomainsLinksRelative' => ['example.com']
],
];