metalsmith-minify-html v1.0.1
metalsmith-minify-html
A metalsmith plugin for minifying HTML markup.
This plugin minifies all of the HTML markup in the HTML files. Under the hood, this plugin uses html-minifier, and uses a default set of options focusing on high minification levels.
Installation
npm install metalsmith-minify-htmlUsage
To use this plugin, simply add it to the existing plugins in your Metalsmith source file or include it in the Metalsmith JSON file:
JavaScript
const Metalsmith = require('metalsmith');
const minifyHtml = require('metalsmith-minify-html');
Metalsmith(__dirname)
.use(minifyHtml())
.build((err, files) => {
if (err) { throw err; }
});JSON
{
"plugins": {
"metalsmith-minify-html": {}
}
}Options
You can pass options to metalsmith-minify-html with the Javascript API or CLI. The options are:
- pattern: optional. Only GIF files that match this pattern will be processed. Accepts a string or an array of strings. The default is
**/*.gif. - htmlMinifierOptions: optional. The options used by the
html-minifier. Accepts an object. The default is the following object:
{
caseSensitive: true,
collapseBooleanAttributes: true,
collapseInlineTagWhitespace: true,
collapseWhitespace: true,
conservativeCollapse: false,
continueOnParseError: true,
html5: true,
keepClosingSlash: false,
minifyURLs: false,
preserveLineBreaks: false,
removeAttributeQuotes: true,
removeComments: true,
removeEmptyAttributes: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true,
trimCustomFragments: true,
useShortDoctype: true,
collapseEmptyAttributes: true,
}pattern
Only HTML files that match this pattern will be minified. So this Metalsmith JavaScript configuration or metalsmith.json:
JavaScript
const Metalsmith = require('metalsmith');
const minifyHtml = require('metalsmith-minify-html');
Metalsmith(__dirname)
.use(minifyHtml({
pattern: 'blog/**/*.html',
}))
.build((err, files) => {
if (err) { throw err; }
});JSON
{
"source": "src",
"destination": "build",
"plugins": {
"metalsmith-minify-html": {
"pattern": "blog/**/*.html"
}
}
}Would only process HTML files within the ./src/blog folder, because the pattern
is relative to your source folder. See multimatch
for further details.
htmlMinifierOptions
The htmlMinifierOptions parameter sets parameters used by the html-minifier library. So this Metalsmith JavaScript configuration or metalsmith.json:
JavaScript
const Metalsmith = require('metalsmith');
const minifyHtml = require('metalsmith-minify-html');
Metalsmith(__dirname)
.use(minifyGifs({
htmlMinifierOptions: {
caseSensitive: true,
collapseBooleanAttributes: true,
collapseInlineTagWhitespace: true,
collapseWhitespace: true,
conservativeCollapse: false,
continueOnParseError: true,
html5: true,
keepClosingSlash: false,
minifyURLs: false,
preserveLineBreaks: false,
removeAttributeQuotes: true,
removeComments: true,
removeEmptyAttributes: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true,
trimCustomFragments: true,
useShortDoctype: true,
collapseEmptyAttributes: true,
},
}))
.build((err, files) => {
if (err) { throw err; }
});JSON
{
"source": "src",
"destination": "build",
"plugins": {
"metalsmith-minify-html": {
"htmlMinifierOptions": {
"caseSensitive": true,
"collapseBooleanAttributes": true,
"collapseInlineTagWhitespace": true,
"collapseWhitespace": true,
"conservativeCollapse": false,
"continueOnParseError": true,
"html5": true,
"keepClosingSlash": false,
"minifyURLs": false,
"preserveLineBreaks": false,
"removeAttributeQuotes": true,
"removeComments": true,
"removeEmptyAttributes": true,
"removeScriptTypeAttributes": true,
"removeStyleLinkTypeAttributes": true,
"trimCustomFragments": true,
"useShortDoctype": true,
"collapseEmptyAttributes": true
}
}
}
}Would modify the options used by the html-minifier library.