feat: now using purgecss

This commit is contained in:
Laureηt 2022-01-24 19:01:01 +01:00
parent abe21f24eb
commit d247352a90
No known key found for this signature in database
GPG key ID: D88C6B294FD40994
3 changed files with 60 additions and 2 deletions

View file

@ -3,6 +3,7 @@ const markdownItAttrs = require("markdown-it-attrs");
const autoprefixer = require("autoprefixer");
const markdownIt = require("markdown-it");
const htmlmin = require("html-minifier");
const purgecss = require("purgecss");
const postcss = require("postcss");
const yaml = require("js-yaml");
const path = require("path");
@ -14,6 +15,8 @@ const markdownLib = markdownIt({
linkify: true,
}).use(markdownItAttrs);
const pattern = new RegExp("(<style>)(.*)?(</style>)", "gm");
module.exports = function (eleventyConfig) {
eleventyConfig.addDataExtension("yml", (contents) => yaml.load(contents));
eleventyConfig.addGlobalData("username", "Laureηt");
@ -70,6 +73,27 @@ module.exports = function (eleventyConfig) {
}
});
eleventyConfig.addTransform(
"purgestyle",
async function (content, outputPath) {
if (
process.env.NODE_ENV === "production" &&
outputPath &&
outputPath.endsWith(".html")
) {
const [{ css: result }] = await new purgecss.PurgeCSS().purge({
content: [
{ raw: content.replace(pattern, "$1$3"), extension: "html" },
],
css: [{ raw: pattern.exec(content)[2] }],
});
console.log(`[PURGECSS] ${outputPath} purged`);
return content.replace(pattern, `<style>${result}</style>`);
}
return content;
}
);
eleventyConfig.addShortcode("year", () => {
const year = new Date().getFullYear();
return year.toString();

View file

@ -18,6 +18,7 @@
"markdown-it-attrs": "^4.1.0",
"npm-run-all": "^4.1.5",
"postcss": "^8.4.5",
"purgecss": "^4.1.3",
"sass": "^1.42.1"
}
}

View file

@ -553,6 +553,11 @@ commander@^5.1.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
commander@^8.0.0:
version "8.3.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
component-bind@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
@ -634,6 +639,11 @@ cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
cssesc@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
debug@2.6.9, debug@^2.2.0:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@ -1037,7 +1047,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
glob@^7.0.3, glob@^7.1.3:
glob@^7.0.3, glob@^7.1.3, glob@^7.1.7:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
@ -1995,12 +2005,20 @@ portscanner@2.1.1:
async "1.5.2"
is-number-like "^1.0.3"
postcss-selector-parser@^6.0.6:
version "6.0.9"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f"
integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
postcss-value-parser@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.4.5:
postcss@^8.3.5, postcss@^8.4.5:
version "8.4.5"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95"
integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==
@ -2143,6 +2161,16 @@ pug@^3.0.2:
pug-runtime "^3.0.1"
pug-strip-comments "^2.0.0"
purgecss@^4.1.3:
version "4.1.3"
resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-4.1.3.tgz#683f6a133c8c4de7aa82fe2746d1393b214918f7"
integrity sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==
dependencies:
commander "^8.0.0"
glob "^7.1.7"
postcss "^8.3.5"
postcss-selector-parser "^6.0.6"
qs@6.2.3:
version "6.2.3"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe"
@ -2680,6 +2708,11 @@ upper-case@^1.1.1:
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
util-deprecate@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"