mirror of
https://github.com/kogakure/website-11ty-hamburg.stefanimhoff.de.git
synced 2026-02-03 12:15:28 +00:00
Basic setup
This commit is contained in:
90
.eleventy.js
Normal file
90
.eleventy.js
Normal file
@@ -0,0 +1,90 @@
|
||||
const pluginLazyImages = require('eleventy-plugin-lazyimages');
|
||||
const pluginRssFeed = require('@11ty/eleventy-plugin-rss');
|
||||
|
||||
const filterNbsp = require('eleventy-nbsp-filter');
|
||||
|
||||
const filters = require('./src/utils/filters.js');
|
||||
const shortcodes = require('./src/utils/shortcodes.js');
|
||||
const collections = require('./src/utils/collections.js');
|
||||
|
||||
module.exports = function (config) {
|
||||
// Plugins
|
||||
config.addPlugin(pluginRssFeed);
|
||||
|
||||
if (process.env.ELEVENTY_ENV == 'production') {
|
||||
config.addPlugin(pluginLazyImages);
|
||||
}
|
||||
|
||||
// Markdown It
|
||||
let markdownIt = require('markdown-it');
|
||||
let markdownItFootnotes = require('markdown-it-footnote');
|
||||
let markdownItGitHubHeadings = require('markdown-it-github-headings');
|
||||
let markdownItSub = require('markdown-it-sub');
|
||||
let markdownItSup = require('markdown-it-sup');
|
||||
let markdownItExternalAnchor = require('markdown-it-external-anchor');
|
||||
let options = {
|
||||
html: true,
|
||||
};
|
||||
|
||||
let markdownLib = markdownIt(options)
|
||||
.use(markdownItFootnotes)
|
||||
.use(markdownItGitHubHeadings)
|
||||
.use(markdownItExternalAnchor, {
|
||||
domain: 'hamburg.stefanimhoff.de',
|
||||
class: 'external',
|
||||
})
|
||||
.use(markdownItSub)
|
||||
.use(markdownItSup);
|
||||
|
||||
config.setLibrary('md', markdownLib);
|
||||
|
||||
// Compress and combine JS files
|
||||
config.addFilter('jsmin', require('./src/utils/minify-js.js'));
|
||||
|
||||
// Minify the HTML in production
|
||||
if (process.env.ELEVENTY_ENV == 'production') {
|
||||
config.addTransform('htmlmin', require('./src/utils/minify-html.js'));
|
||||
}
|
||||
|
||||
// Shortcodes
|
||||
|
||||
// Filters
|
||||
Object.keys(filters).forEach((filterName) => {
|
||||
config.addFilter(filterName, filters[filterName]);
|
||||
});
|
||||
config.addFilter('nbsp', filterNbsp(2, 15));
|
||||
|
||||
// Watch for changes and reload
|
||||
config.addWatchTarget('src/assets');
|
||||
|
||||
// Copy static files to dist
|
||||
config.addPassthroughCopy({ 'src/static/**/*.{xml,html,ico}': '.' });
|
||||
config.addPassthroughCopy({ 'src/static/.well-known/*': '.well-known' });
|
||||
config.addPassthroughCopy({ 'src/downloads': 'downloads' });
|
||||
config.addPassthroughCopy({ 'src/assets/fonts': 'assets/fonts' });
|
||||
config.addPassthroughCopy({ 'src/assets/images': 'assets/images' });
|
||||
|
||||
// Deep-Merge
|
||||
config.setDataDeepMerge(true);
|
||||
|
||||
// Custom Collections
|
||||
Object.keys(collections).forEach((collectionName) => {
|
||||
config.addCollection(collectionName, collections[collectionName]);
|
||||
});
|
||||
|
||||
// Set input and output folders
|
||||
return {
|
||||
dir: {
|
||||
input: 'src',
|
||||
data: 'data',
|
||||
includes: 'includes',
|
||||
layouts: 'layouts',
|
||||
output: 'dist',
|
||||
},
|
||||
templateFormats: ['njk', 'md', '11ty.js', 'jpg', 'png', 'svg'],
|
||||
htmlTemplateEngine: 'njk',
|
||||
dataTemplateEngine: 'njk',
|
||||
markdownTemplateEngine: 'njk',
|
||||
passthroughFileCopy: true,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user