slime-quest-web/eleventy.config.js
2025-03-15 19:32:32 -07:00

44 lines
1.6 KiB
JavaScript

/** @param {import('@11ty/eleventy').UserConfig} eleventyConfig */
export default function(eleventyConfig) {
// Markdown and templates go in site-source. They will be converted to HTML.
eleventyConfig.setInputDirectory('site-source');
eleventyConfig.setOutputDirectory('slimequest');
eleventyConfig.setTemplateFormats('md,njk');
// Everything else goes in site-static. It just gets copied normally.
eleventyConfig.addPassthroughCopy({ 'site-static': '/' });
eleventyConfig.addWatchTarget('site-static/*.css');
// If you want these files to live at, e.g. "example.com/quest", then set pathPrefix to "quest".
const pathPrefix = 'slimequest';
// Convenience function for quest images
// example: {% image '1.jpg' %}
// Can also add alt text:
// example: {% image '2.jpg', 'slime dragon with sword piercing its heart' %}
eleventyConfig.addShortcode('image', (filename, alt) => {
return `<img src=/${pathPrefix}/${filename} alt="${alt}" title="${alt}">`
});
// Fix page sorting. By default this is by file created date? We want it to be by filename.
eleventyConfig.addCollection('pages', (collection) => (collection
.getFilteredByGlob(['site-source/index.md', 'site-source/page-*.md'])
.map(page => {
let number;
if (page.fileSlug == 'index') {
number = 0;
} else {
number = Number(page.fileSlug.slice('page-'.length));
}
return { page, number };
})
.sort((a, b) => a.number - b.number)
.map(p => p.page)
));
return {
markdownTemplateEngine: 'njk',
pathPrefix: pathPrefix,
}
}