diff --git a/eleventy.config.js b/eleventy.config.js
index 6070e6e..e54338f 100644
--- a/eleventy.config.js
+++ b/eleventy.config.js
@@ -1,44 +1,51 @@
const pluginWebc = require("@11ty/eleventy-plugin-webc");
+const htmlmin = require("html-minifier");
-module.exports = function(ec) {
+module.exports = function (ec) {
// Plugins
// add webc files by default
- ec.addPlugin(pluginWebc, {components: "_includes/components/**/*.webc"});
+ ec.addPlugin(pluginWebc, { components: "_includes/components/**/*.webc" });
+ ec.addTransform("htmlmin", function (content) {
+ // Prior to Eleventy 2.0: use this.outputPath instead
+ if (this.page.outputPath && this.page.outputPath.endsWith(".html")) {
+ let minified = htmlmin.minify(content, {
+ useShortDoctype: true,
+ collapseWhitespace: true,
+ });
+ return minified;
+ }
+ return content;
+ });
return {
- // Control which files Eleventy will process
- // e.g.: *.md, *.njk, *.html, *.liquid
- templateFormats: [
- "md",
- "njk",
- "html",
- "liquid"
- ],
+ // Control which files Eleventy will process
+ // e.g.: *.md, *.njk, *.html, *.liquid
+ templateFormats: ["md", "njk", "html", "liquid"],
- // Pre-process *.md files with: (default: `liquid`)
- markdownTemplateEngine: "njk",
+ // Pre-process *.md files with: (default: `liquid`)
+ markdownTemplateEngine: "njk",
- // Pre-process *.html files with: (default: `liquid`)
- htmlTemplateEngine: "njk",
+ // Pre-process *.html files with: (default: `liquid`)
+ htmlTemplateEngine: "njk",
- // These are all optional:
- dir: {
- input: "content", // default: "."
- includes: "../_includes", // default: "_includes"
- data: "../_data", // default: "_data"
- output: "_site"
- },
+ // These are all optional:
+ dir: {
+ input: "content", // default: "."
+ includes: "../_includes", // default: "_includes"
+ data: "../_data", // default: "_data"
+ output: "_site",
+ },
- // -----------------------------------------------------------------
- // Optional items:
- // -----------------------------------------------------------------
+ // -----------------------------------------------------------------
+ // Optional items:
+ // -----------------------------------------------------------------
- // If your site deploys to a subdirectory, change `pathPrefix`.
- // Read more: https://www.11ty.dev/docs/config/#deploy-to-a-subdirectory-with-a-path-prefix
+ // If your site deploys to a subdirectory, change `pathPrefix`.
+ // Read more: https://www.11ty.dev/docs/config/#deploy-to-a-subdirectory-with-a-path-prefix
- // When paired with the HTML plugin https://www.11ty.dev/docs/plugins/html-base/
- // it will transform any absolute URLs in your HTML to include this
- // folder name and does **not** affect where things go in the output folder.
- pathPrefix: "/",
- };
-}
+ // When paired with the HTML plugin https://www.11ty.dev/docs/plugins/html-base/
+ // it will transform any absolute URLs in your HTML to include this
+ // folder name and does **not** affect where things go in the output folder.
+ pathPrefix: "/",
+ };
+};
diff --git a/package-lock.json b/package-lock.json
index 00b7022..120a094 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,8 +9,9 @@
"version": "1.0.0",
"license": "ISC",
"devDependencies": {
- "@11ty/eleventy": "^2.0.1",
- "@11ty/eleventy-plugin-webc": "^0.11.0"
+ "@11ty/eleventy": "github:11ty/eleventy",
+ "@11ty/eleventy-plugin-webc": "^0.11.0",
+ "html-minifier": "^4.0.0"
}
},
"node_modules/@11ty/dependency-tree": {
@@ -20,10 +21,10 @@
"dev": true
},
"node_modules/@11ty/eleventy": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-2.0.1.tgz",
- "integrity": "sha512-t8XVUbCJByhVEa1RzO0zS2QzbL3wPY8ot1yUw9noqiSHxJWUwv6jiwm1/MZDPTYtkZH2ZHvdQIRQ5/SjG9XmLw==",
+ "version": "2.0.2-alpha.2",
+ "resolved": "git+ssh://git@github.com/11ty/eleventy.git#8e88b0786b4330182020dd0a7bc602ff774869f6",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@11ty/dependency-tree": "^2.0.1",
"@11ty/eleventy-dev-server": "^1.0.4",
@@ -559,6 +560,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -611,6 +622,18 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/clean-css": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
+ "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+ "dev": true,
+ "dependencies": {
+ "source-map": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -1154,6 +1177,42 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/html-minifier": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz",
+ "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==",
+ "dev": true,
+ "dependencies": {
+ "camel-case": "^3.0.0",
+ "clean-css": "^4.2.1",
+ "commander": "^2.19.0",
+ "he": "^1.2.0",
+ "param-case": "^2.1.1",
+ "relateurl": "^0.2.7",
+ "uglify-js": "^3.5.1"
+ },
+ "bin": {
+ "html-minifier": "cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/html-minifier/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
"node_modules/htmlparser2": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
@@ -1463,6 +1522,12 @@
"integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==",
"dev": true
},
+ "node_modules/lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==",
+ "dev": true
+ },
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -1712,6 +1777,15 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
+ "node_modules/no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "dev": true,
+ "dependencies": {
+ "lower-case": "^1.1.1"
+ }
+ },
"node_modules/node-retrieve-globals": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/node-retrieve-globals/-/node-retrieve-globals-2.0.8.tgz",
@@ -1807,6 +1881,15 @@
"wrappy": "1"
}
},
+ "node_modules/param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^2.2.0"
+ }
+ },
"node_modules/parse-srcset": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
@@ -2155,6 +2238,15 @@
"slash": "^1.0.0"
}
},
+ "node_modules/relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/resolve": {
"version": "1.22.2",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
@@ -2406,7 +2498,6 @@
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
"integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
"dev": true,
- "optional": true,
"bin": {
"uglifyjs": "bin/uglifyjs"
},
@@ -2423,6 +2514,12 @@
"node": ">= 0.8"
}
},
+ "node_modules/upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==",
+ "dev": true
+ },
"node_modules/void-elements": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
diff --git a/package.json b/package.json
index 7bda522..8a8c22b 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,8 @@
"author": "",
"license": "ISC",
"devDependencies": {
- "@11ty/eleventy": "^2.0.1",
- "@11ty/eleventy-plugin-webc": "^0.11.0"
+ "@11ty/eleventy": "github:11ty/eleventy",
+ "@11ty/eleventy-plugin-webc": "^0.11.0",
+ "html-minifier": "^4.0.0"
}
}