character-ref/eleventy.config.js
Sebin Nyshkim 23c06bcd3a fix: 🐛 add transform so prevent generation of invalid markup
Occasionally, WebC components in Markdown cause unintended paragraph tags to appear in places which produce invalid markup and break styling
2025-06-26 20:08:24 +02:00

66 lines
2.1 KiB
JavaScript

import eleventyPluginNavigation from '@11ty/eleventy-navigation';
import eleventyPluginWebc from '@11ty/eleventy-plugin-webc';
import { eleventyImagePlugin } from '@11ty/eleventy-img';
import htmlminifier from 'html-minifier-terser';
const IMAGE_TRANSFORM_OPTS = {
// Set global default options
formats: ['avif', 'webp', 'auto'],
sharpJpegOptions: { mozjpeg: true, optimiseScans: true, quality: 95 },
sharpPngOptions: { compressionLevel: 9 },
urlPath: '/img/',
// Notably `outputDir` is resolved automatically
// to the project output directory
defaultAttributes: {
loading: 'lazy',
decoding: 'async',
sizes: '(min-width: 64em) 500px, (min-width: 50em) 420px, 375px'
}
};
export default async function (eleventyConfig) {
eleventyConfig.addWatchTarget('./src/css/');
eleventyConfig.addPassthroughCopy('./src/fonts/');
eleventyConfig.addCollection('sebin', (collection) =>
collection.getFilteredByGlob('./src/sebin/*.md')
);
eleventyConfig.addCollection('viktor', (collection) =>
collection.getFilteredByGlob('./src/viktor/*.md')
);
eleventyConfig.addCollection('jarek', (collection) =>
collection.getFilteredByGlob('./src/jarek/*.md')
);
eleventyConfig.addTransform('minhtml', function (content) {
if ((this.page.outputPath || '').endsWith('.html')) {
return htmlminifier.minify(content, {
// keepClosingSlash: true,
removeEmptyElements: true,
collapseWhitespace: true,
ignoreCustomFragments: [
/<(use|path)[^>]*>(?:(?!<\/(use|path)>)[\s\S])*?<\/(use|path)>/,
/<div[^>]*class="color-box"[^>]*>(?:(?!<\/div>)[\s\S])*?<\/div>/,
/<nav[^>]*class="gallery-nav"[^>]*>.*?<\/nav>/
]
});
}
});
eleventyConfig.addPlugin(eleventyPluginWebc, {
components: ['src/components/**/*.webc', 'npm:@11ty/eleventy-img/*.webc'],
useTransform: false
});
eleventyConfig.addPlugin(eleventyPluginNavigation);
eleventyConfig.addPlugin(eleventyImagePlugin, IMAGE_TRANSFORM_OPTS);
}
export const config = {
dir: {
input: 'src',
output: 'public',
layouts: 'layouts',
includes: 'includes'
},
markdownTemplateEngine: 'webc'
};