coryd.dev/eleventy.config.js

58 lines
1.9 KiB
JavaScript

import { createRequire } from 'module';
import 'dotenv/config';
import filters from './config/filters/index.js';
import tablerIcons from '@cdransf/eleventy-plugin-tabler-icons';
import { minifyJsComponents } from './config/events/minify-js.js';
import { albumReleasesCalendar } from './config/collections/index.js';
import plugins from './config/plugins/index.js';
const require = createRequire(import.meta.url);
const appVersion = require('./package.json').version;
export default async function (eleventyConfig) {
eleventyConfig.addPlugin(tablerIcons);
eleventyConfig.addPlugin(plugins.cssConfig);
eleventyConfig.addPlugin(plugins.htmlConfig);
eleventyConfig.setQuietMode(true);
eleventyConfig.configureErrorReporting({ allowMissingExtensions: true });
eleventyConfig.setLiquidOptions({ jsTruthy: true });
eleventyConfig.watchIgnores.add('queries/**');
eleventyConfig.addPassthroughCopy('src/assets');
eleventyConfig.addPassthroughCopy('api');
eleventyConfig.addPassthroughCopy('bootstrap.php');
eleventyConfig.addPassthroughCopy({
'node_modules/minisearch/dist/umd/index.js': 'assets/scripts/components/minisearch.js',
'node_modules/youtube-video-element/dist/youtube-video-element.js':
'assets/scripts/components/youtube-video-element.js'
});
eleventyConfig.addCollection('albumReleasesCalendar', albumReleasesCalendar);
eleventyConfig.setLibrary('md', plugins.markdownLib);
eleventyConfig.addLiquidFilter('markdown', (content) => {
if (!content) return;
return plugins.markdownLib.render(content);
});
Object.keys(filters).forEach((filterName) => {
eleventyConfig.addLiquidFilter(filterName, filters[filterName]);
});
eleventyConfig.addShortcode('appVersion', () => appVersion);
eleventyConfig.on('afterBuild', minifyJsComponents);
return {
dir: {
input: 'src',
includes: 'includes',
layouts: 'layouts',
data: 'data',
output: 'dist'
}
};
}