diff --git a/.eleventy.js b/.eleventy.js new file mode 100644 index 0000000000000000000000000000000000000000..1f24433f098043f67b94114bf0418c6fbd184386 --- /dev/null +++ b/.eleventy.js @@ -0,0 +1,140 @@ +const { DateTime } = require("luxon"); +const fs = require("fs"); +const pluginRss = require("@11ty/eleventy-plugin-rss"); +const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight"); +const pluginNavigation = require("@11ty/eleventy-navigation"); +const pluginSEO = require('eleventy-plugin-seo'); +const markdownIt = require("markdown-it"); +const markdownItAnchor = require("markdown-it-anchor"); +const lodash = require('lodash'); +const redirect = require('./build/redirect'); + +module.exports = function(eleventyConfig) { + eleventyConfig.addPlugin(pluginRss); + eleventyConfig.addPlugin(pluginSyntaxHighlight); + eleventyConfig.addPlugin(pluginNavigation); + eleventyConfig.addPlugin(pluginSEO); + + redirect('/2020/03/14/The-Discord-privacy-scandal.html', '/articles/discord.html'); + redirect('/2020/05/02/Twitter-we-need-a-break.html', '/articles/twitter.html'); + redirect('/2020/05/02/Twitter-we-need-a-break.html', '/articles/mastodon.html'); + redirect('/2020/05/18/Isolation-the-effects-on-mental-health.html', '/articles/isolation.html'); + + eleventyConfig.addShortcode('removeTrailingSlash', string => string.replace(/\/$/, '')); + + eleventyConfig.setDataDeepMerge(true); + + eleventyConfig.addLayoutAlias("post", "post.html"); + eleventyConfig.addLayoutAlias("base", "base.html"); + + eleventyConfig.addFilter("readableDate", dateObj => { + return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat("dd LLL yyyy"); + }); + + eleventyConfig.addCollection('articles', (collectionAPI) => + collectionAPI.getFilteredByGlob('./articles/*.md') + ); + + eleventyConfig.addCollection('responses', (collectionAPI) => + collectionAPI.getFilteredByGlob('./responses/*.md') + ); + + // https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string + eleventyConfig.addFilter('htmlDateString', (dateObj) => { + return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat('yyyy-LL-dd'); + }); + + eleventyConfig.addShortcode('get', function (object, path) { + return lodash.get(object, path); + }); + + eleventyConfig.addShortcode('env', function () { + return process.env.NODE_ENV || 'development'; + }); + + eleventyConfig.addShortcode('synth_reverse', function (array) { + return [...array].reverse(); + }); + + eleventyConfig.addPairedShortcode('takeaway', content => + `<div class="take-away">${content}</div>` + ); + +// eleventyConfig.addShortcode('isDefined', function ()) + + // Get the first `n` elements of a collection. + eleventyConfig.addFilter("head", (array, n) => { + if( n < 0 ) { + return array.slice(n); + } + + return array.slice(0, n); + }); + +// eleventyConfig.addCollection("tagList", require("./_11ty/getTagList")); + + eleventyConfig.addPassthroughCopy("img"); + eleventyConfig.addPassthroughCopy("styling"); + eleventyConfig.addPassthroughCopy("assets"); + + /* Markdown Overrides */ + let markdownLibrary = markdownIt({ + html: true, + breaks: true, + linkify: true + }).use(markdownItAnchor, { + permalink: true, + permalinkClass: "direct-link", + permalinkSymbol: "#" + }); + eleventyConfig.setLibrary("md", markdownLibrary); + + // Browsersync Overrides + eleventyConfig.setBrowserSyncConfig({ + callbacks: { + ready: function(err, browserSync) { + // const content_404 = fs.readFileSync('_site/404.html'); + + // browserSync.addMiddleware("*", (req, res) => { + // // Provides the 404 content without redirect. + // res.write(content_404); + // res.end(); + // }); + }, + }, + ui: false, + ghostMode: false + }); + + return { + templateFormats: [ + "md", + "html", + "liquid", + "pug" + ], + + // If your site lives in a different subdirectory, change this. + // Leading or trailing slashes are all normalized away, so don’t worry about those. + + // If you don’t have a subdirectory, use "" or "/" (they do the same thing) + // This is only used for link URLs (it does not affect your file structure) + // Best paired with the `url` filter: https://www.11ty.io/docs/filters/url/ + + // You can also pass this in on the command line using `--pathprefix` + // pathPrefix: "/", + + markdownTemplateEngine: "liquid", + htmlTemplateEngine: "liquid", + dataTemplateEngine: "liquid", + + // These are all optional, defaults are shown: + dir: { + input: "./", + includes: "_includes/", + layouts: "_includes/layouts/", + data: "_data", + output: "_site" + } + }; +}; diff --git a/.eleventyignore b/.eleventyignore new file mode 100644 index 0000000000000000000000000000000000000000..3bbe627b95f7423b3830c0531f8582267f8baaac --- /dev/null +++ b/.eleventyignore @@ -0,0 +1,4 @@ +new-blog/ +old/ +.vercel/ +node_modules/ \ No newline at end of file