Occasionally, WebC components in Markdown cause unintended paragraph tags to appear in places which produce invalid markup and break styling
66 lines
2.1 KiB
JavaScript
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'
|
|
};
|