diff options
Diffstat (limited to '.eleventy.js')
-rw-r--r-- | .eleventy.js | 147 |
1 files changed, 50 insertions, 97 deletions
diff --git a/.eleventy.js b/.eleventy.js index b6e2045..ef7dab5 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,121 +1,74 @@ -const eleventy = require('@11ty/eleventy') -const eleventysyntaxhighlight = require('@11ty/eleventy-plugin-syntaxhighlight') -const eleventyrss = require('@11ty/eleventy-plugin-rss') +const eleventy = require("@11ty/eleventy"); +const eleventysyntaxhighlight = require("@11ty/eleventy-plugin-syntaxhighlight"); +const eleventyrss = require("@11ty/eleventy-plugin-rss"); -const markdown = require('markdown-it') -const markdownattrs = require('markdown-it-attrs') -const markdownanchor = require('markdown-it-anchor') -const markdownfootnote = require('markdown-it-footnote') +const markdown = require("markdown-it"); +const markdownattrs = require("markdown-it-attrs"); +const markdownanchor = require("markdown-it-anchor"); +const markdownfootnote = require("markdown-it-footnote"); -const postcss = require('postcss') -const postcssenv = require('postcss-preset-env') +const slugify = require("@sindresorhus/slugify"); -const babel = require("@babel/core"); +module.exports = eleventyConfig => { -const crypto = require('node:crypto') -const luxon = require('luxon') -const slugify = require('@sindresorhus/slugify') + [ + eleventy.EleventyRenderPlugin, +// eleventysyntaxhighlight, + eleventyrss -module.exports = eleventyConfig => { - eleventyConfig.addPlugin(eleventy.EleventyRenderPlugin); - eleventyConfig.addPlugin(eleventysyntaxhighlight) - eleventyConfig.addPlugin(eleventyrss) + ].forEach(element => eleventyConfig.addPlugin(element)); - eleventyConfig.setLibrary('md', markdown({ + + eleventyConfig.addPassthroughCopy([ + "assets/", + "_headers", + "_redirects", + "favicon/", + { + "assets/sw.js": "/sw.js" + }, + { + "favicon/icon.ico": "/favicon.ico" + }, + { + [require.resolve("prismjs/themes/prism-twilight.min.css")]: "/vendor/prism.css" + } + ].forEach(element => eleventyConfig.addPassthroughCopy(element))); + + eleventyConfig.setLibrary("md", markdown({ html: true, linkify: true, typographer: true }).use(markdownattrs) .use(markdownanchor, { permalink: markdownanchor.permalink.headerLink(), - slugify: s => slugify(s) - }).use(markdownfootnote)) - - eleventyConfig.addFilter('datefmt', date => luxon.DateTime.fromJSDate(date, { zone: 'utc' }).toFormat("dd LLL yyyy")) - eleventyConfig.addFilter("tojson", obj => JSON.stringify(obj)) + slugify: slug => slugify(slug) + }).use(markdownfootnote)); - - eleventyConfig.addExtension("css", { - outputFileExtension: "css", - compileOptions: { - permalink: "raw" - }, - compile: async(content, filename) => - async data => { - const css = await postcss().use( - postcssenv({ - stage: 3, - features: { - "nesting-rules": true - } - })) - .process(content, { - from: filename, - map: data.env.NODE_ENV == "develoment" - }) - - return css.css - } - }) + eleventyConfig.addFilter("getNewestCollectionItemDate", eleventyrss.getNewestCollectionItemDate); + eleventyConfig.addJavaScriptFunction("convertHtmlToAbsoluteUrls", eleventyrss.convertHtmlToAbsoluteUrls); eleventyConfig.setBrowserSyncConfig({ snippet: false, }); - eleventyConfig.addExtension("mjs", { - outputFileExtension: "js", - compileOptions: { - permalink: "raw" - }, - compile: (content, filename) => - async data => { - const js = await babel.transformAsync(content, { - presets: [ - ["@babel/preset-env", { - "targets": { - "esmodules": true, - }, - bugfixes: true - }] - ], - plugins: [ - ["transform-define", { - VERSION: `${data.env.CF_PAGES_BRANCH || "default"}-${data.env.CF_PAGES_COMMIT_SHA || crypto.randomUUID()}` - }] - ], - sourceMaps: data.env.NODE_ENV == "develoment" ? "inline" : false, - sourceFileName: filename - }) - return js.code - } - }) - - - eleventyConfig.addPassthroughCopy('static/') - eleventyConfig.addPassthroughCopy('_headers') - eleventyConfig.addPassthroughCopy('_redirects') - eleventyConfig.addPassthroughCopy('favicon/') - eleventyConfig.addPassthroughCopy('favicon.ico') - return { dir: { - input: 'src', - output: 'dist', - includes: 'includes', - data: 'data', - layouts: 'layouts' + input: "src", + output: "dist", + includes: "includes", + data: "data", + layouts: "layouts" }, - dataTemplateEngine: 'njk', - markdownTemplateEngine: 'njk', - htmlTemplateEngine: 'njk', + dataTemplateEngine: "njk", + markdownTemplateEngine: "njk", + htmlTemplateEngine: "njk", templateFormats: [ - 'html', - 'md', - 'njk', - '11ty.js', - 'css', - 'mjs' + "html", + "md", + "njk", + "11ty.js" ] - } -}
\ No newline at end of file + }; +}; |