From 4551849519e448517040b53e481b5355e9d3e3b9 Mon Sep 17 00:00:00 2001
From: Pete Robelou
Date: Tue, 22 Jun 2021 17:29:01 +0100
Subject: [PATCH] HTML minify
- Installed html-minifier package
- Created transforms folder
- Fixed a few syntax issues on /community/team
---
.eleventy.js | 6 ++-
package-lock.json | 70 ++++++++++++++++++++++++++-
package.json | 1 +
src/_11ty/transforms/html-minifier.js | 14 ++++++
src/en/community/team/index.html | 9 +++-
5 files changed, 94 insertions(+), 6 deletions(-)
create mode 100644 src/_11ty/transforms/html-minifier.js
diff --git a/.eleventy.js b/.eleventy.js
index 80886606b..55a2ca30e 100644
--- a/.eleventy.js
+++ b/.eleventy.js
@@ -2,11 +2,11 @@ const fs = require('fs');
// Plugins
const eleventyNavigationPlugin = require('@11ty/eleventy-navigation');
-const sitemap = require('@quasibit/eleventy-plugin-sitemap');
+const build = require('./src/_data/build');
const i18n = require('eleventy-plugin-i18n');
const markdownIt = require('markdown-it');
const markdownItAnchor = require('markdown-it-anchor');
-const build = require('./src/_data/build');
+const sitemap = require('@quasibit/eleventy-plugin-sitemap');
const translations = require('./src/_data/i18n');
module.exports = function (eleventyConfig) {
@@ -79,6 +79,8 @@ module.exports = function (eleventyConfig) {
eleventyConfig.addShortcode('YouTube', require(`${shortcodesDir}/YouTube.js`));
// Transforms
+ const transformsDir = `./src/_11ty/transforms`;
+ eleventyConfig.addTransform('htmlmin', require(`${transformsDir}/html-minifier.js`));
// Passthrough copy
eleventyConfig.addPassthroughCopy('./src/assets/**/*.json');
diff --git a/package-lock.json b/package-lock.json
index d78d012a2..bff8a33ed 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2969,6 +2969,16 @@
"integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
"dev": true
},
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
@@ -6156,6 +6166,12 @@
}
}
},
+ "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
+ },
"hex-color-regex": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
@@ -6186,6 +6202,21 @@
"integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
"dev": true
},
+ "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,
+ "requires": {
+ "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"
+ }
+ },
"http-cache-semantics": {
"version": "3.8.1",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
@@ -7643,6 +7674,12 @@
"signal-exit": "^3.0.0"
}
},
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+ "dev": true
+ },
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
@@ -8046,6 +8083,15 @@
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
+ "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,
+ "requires": {
+ "lower-case": "^1.1.1"
+ }
+ },
"node-releases": {
"version": "1.1.60",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz",
@@ -8624,6 +8670,15 @@
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0"
+ }
+ },
"parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -15582,6 +15637,12 @@
}
}
},
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+ "dev": true
+ },
"repeat-element": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
@@ -17312,8 +17373,7 @@
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.0.tgz",
"integrity": "sha512-8lBMSkFZuAK7gGF8LswsXmir8eX8d2AAMOnxSDWjKBx/fBR6MypQjs78m6ML9zQVp1/hD4TBdfeMZMC7nW1TAA==",
- "dev": true,
- "optional": true
+ "dev": true
},
"uglify-to-browserify": {
"version": "1.0.2",
@@ -17460,6 +17520,12 @@
}
}
},
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+ "dev": true
+ },
"urix": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
diff --git a/package.json b/package.json
index 10c007851..e21c8f0fc 100644
--- a/package.json
+++ b/package.json
@@ -51,6 +51,7 @@
"cross-env": "7.0.2",
"cssnano": "^4.1.10",
"eleventy-plugin-i18n": "0.1.0",
+ "html-minifier": "^4.0.0",
"husky": "^6.0.0",
"imagemin": "^7.0.1",
"imagemin-mozjpeg": "^9.0.0",
diff --git a/src/_11ty/transforms/html-minifier.js b/src/_11ty/transforms/html-minifier.js
new file mode 100644
index 000000000..6ed68a078
--- /dev/null
+++ b/src/_11ty/transforms/html-minifier.js
@@ -0,0 +1,14 @@
+const htmlmin = require('html-minifier');
+
+module.exports = (content, outputPath) => {
+ if (outputPath && outputPath.endsWith('.html')) {
+ return htmlmin.minify(content, {
+ collapseWhitespace: true,
+ minifyCSS: true,
+ minifyJS: true,
+ removeComments: true,
+ });
+ }
+
+ return content;
+};
diff --git a/src/en/community/team/index.html b/src/en/community/team/index.html
index 1ad520f6a..af6264b77 100644
--- a/src/en/community/team/index.html
+++ b/src/en/community/team/index.html
@@ -323,7 +323,9 @@ Sebastien Han
working with containers as well and ultimately implemented containerized Docker Ceph services. Now on a daily basis, he rotates
between Ceph, OpenStack, and Docker in an effort to strengthen the integration between all three. From time to time, he attends
various events where he evangelizes these technologies and their usage, while devoting his copious spare time to blogging. See
- . But alas, this is just the beginning :).
+ http://www.sebastien-han.fr/blog/. But alas, this is just the beginning :).
@@ -338,7 +340,10 @@ Chris Jones
Chris is a Technical Lead at Bloomberg for Cloud Storage, including Ceph Object and Block storage. He maintains Ceph-Chef Chef
Cookbooks and Ceph-Rust (Official Rust SDK for Ceph). Chris also maintains other opensource projects for Enterprise storage
- including aws-sdk-rust and s3lsio located at .
+ including aws-sdk-rust and s3lsio located at
+ https://github.com/lambdastackio.