aboutsummaryrefslogtreecommitdiffstats
path: root/.eleventy.js
diff options
context:
space:
mode:
Diffstat (limited to '.eleventy.js')
-rw-r--r--.eleventy.js147
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
+ };
+};