moved files in place, edited posts to fix date format (seconds need added to some times, plus add colon to +time), added eleventy ignore file, added .eleventy.js
This commit is contained in:
parent
5b16d8f1bd
commit
3d3b18411f
|
@ -0,0 +1,353 @@
|
||||||
|
const fs = require("fs-extra");
|
||||||
|
const sass = require("sass");
|
||||||
|
const { promisify } = require("util");
|
||||||
|
const sassRender = promisify(sass.render);
|
||||||
|
const postcss = require("postcss");
|
||||||
|
const autoprefixer = require("autoprefixer");
|
||||||
|
const markdownIt = require("markdown-it");
|
||||||
|
const markdownItRenderer = new markdownIt();
|
||||||
|
const markdownItAnchor = require("markdown-it-anchor");
|
||||||
|
// const relativeUrl = require("eleventy-filter-relative-url");
|
||||||
|
const pluginTOC = require("eleventy-plugin-toc");
|
||||||
|
const moment = require("moment");
|
||||||
|
const description = require("eleventy-plugin-description");
|
||||||
|
const pluginRss = require("@11ty/eleventy-plugin-rss");
|
||||||
|
const UpgradeHelper = require("@11ty/eleventy-upgrade-help");
|
||||||
|
const xmlFiltersPlugin = require("eleventy-xml-plugin");
|
||||||
|
|
||||||
|
// relativeURL
|
||||||
|
const path = require("path");
|
||||||
|
const urlFilter = require("@11ty/eleventy/src/Filters/Url");
|
||||||
|
const indexify = (url) => url.replace(/(\/[^.]*)$/, "$1index.html");
|
||||||
|
|
||||||
|
module.exports = function (eleventyConfig) {
|
||||||
|
eleventyConfig.addPlugin(pluginRss);
|
||||||
|
//Blog excerpts
|
||||||
|
eleventyConfig.addPlugin(description);
|
||||||
|
// Eleventy Navigation (https://www.11ty.dev/docs/plugins/navigation/)
|
||||||
|
eleventyConfig.addPlugin(require("@11ty/eleventy-navigation"));
|
||||||
|
// Eleventy RSS Feed (https://www.11ty.dev/docs/plugins/rss/)
|
||||||
|
eleventyConfig.addPlugin(require("@11ty/eleventy-plugin-rss"));
|
||||||
|
// Filter to generate a Table of Contents from page content
|
||||||
|
eleventyConfig.addPlugin(pluginTOC, {
|
||||||
|
tags: ["h2", "h3"],
|
||||||
|
wrapper: "div",
|
||||||
|
});
|
||||||
|
// TODO https://www.npmjs.com/package/eleventy-plugin-meta-generator
|
||||||
|
// Eleventy Syntax Highlighting (https://www.11ty.dev/docs/plugins/syntaxhighlight/)
|
||||||
|
eleventyConfig.addPlugin(require("@11ty/eleventy-plugin-syntaxhighlight"));
|
||||||
|
|
||||||
|
eleventyConfig.addPlugin(xmlFiltersPlugin);
|
||||||
|
|
||||||
|
// Custom Collections
|
||||||
|
eleventyConfig.addCollection("pages", (collection) =>
|
||||||
|
collection.getFilteredByGlob("./src/_pages/**/*")
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("posts", (collection) =>
|
||||||
|
collection
|
||||||
|
.getFilteredByGlob("./src/_posts/**/*")
|
||||||
|
.filter(
|
||||||
|
(item) => item.data.draft !== true && item.date <= new Date()
|
||||||
|
)
|
||||||
|
.reverse()
|
||||||
|
.map((cur, i, all) => {
|
||||||
|
cur.data["siblings"] = {
|
||||||
|
next: all[i - 1],
|
||||||
|
prev: all[i + 1],
|
||||||
|
};
|
||||||
|
return cur;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("projects", (collection) =>
|
||||||
|
collection
|
||||||
|
.getFilteredByGlob("./src/projects/**/*")
|
||||||
|
.sort((a, b) => a.data.weight - b.data.weight)
|
||||||
|
);
|
||||||
|
|
||||||
|
// eleventyConfig.addCollection("posts", function (collectionApi) {
|
||||||
|
// return collectionApi.getFilteredByGlob("./src/posts/**/*.md");
|
||||||
|
// });
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("tags", (collection) => {
|
||||||
|
let tags = new Set();
|
||||||
|
|
||||||
|
collection.getAll().forEach((item) => {
|
||||||
|
if ("tags" in item.data) {
|
||||||
|
for (const tag of item.data.tags) {
|
||||||
|
tags.add(tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return [...tags];
|
||||||
|
});
|
||||||
|
|
||||||
|
// Filters
|
||||||
|
|
||||||
|
// eleventyConfig.addFilter("markdownify", (str) => {
|
||||||
|
// return markdownItRenderer.renderInline(str);
|
||||||
|
// });
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("markdownify", (string) => {
|
||||||
|
return md.renderInline(string);
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addNunjucksFilter("markdownify", (str) => md.render(str));
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("jsonify", (variable) => JSON.stringify(variable));
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("slugify", (str) =>
|
||||||
|
require("slugify")(str, {
|
||||||
|
lower: true,
|
||||||
|
replacement: "-",
|
||||||
|
remove: /[*+~.·,()''`´%!?¿:@]/g,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("where", (array, key, value) =>
|
||||||
|
array.filter((item) => {
|
||||||
|
const keys = key.split(".");
|
||||||
|
const reducedKey = keys.reduce((object, key) => object[key], item);
|
||||||
|
|
||||||
|
return reducedKey === value ? item : false;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("date", (date, format = "") =>
|
||||||
|
require("moment")(date).format(format)
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("relative_url", relativeURL);
|
||||||
|
eleventyConfig.addLiquidFilter("toUTCString", (date) => {
|
||||||
|
const utc = date.toUTCString();
|
||||||
|
return moment.utc(utc).format("MMMM Do YYYY");
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("number_of_words", numberOfWords);
|
||||||
|
|
||||||
|
// eleventyConfig.addFilter("absolute_url", relativeUrl);
|
||||||
|
|
||||||
|
// eleventyConfig.addShortcode("where_exp", function (item, exp) {
|
||||||
|
// console.log(exp);
|
||||||
|
// return eval(exp);
|
||||||
|
// });
|
||||||
|
eleventyConfig.addFilter("where_exp", function (value) {
|
||||||
|
// where_exp function
|
||||||
|
return value.hidden != true;
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addLayoutAlias(
|
||||||
|
"archive-taxonomy",
|
||||||
|
"layouts/archive-taxonomy.html"
|
||||||
|
);
|
||||||
|
eleventyConfig.addLayoutAlias("archive", "layouts/archive.html");
|
||||||
|
eleventyConfig.addLayoutAlias("categories", "layouts/categories.html");
|
||||||
|
eleventyConfig.addLayoutAlias("category", "layouts/category.html");
|
||||||
|
eleventyConfig.addLayoutAlias("collection", "layouts/collection.html");
|
||||||
|
eleventyConfig.addLayoutAlias("compress", "layouts/compress.html");
|
||||||
|
eleventyConfig.addLayoutAlias("default", "layouts/default.html");
|
||||||
|
eleventyConfig.addLayoutAlias("home", "layouts/home.html");
|
||||||
|
eleventyConfig.addLayoutAlias("posts", "layouts/posts.html");
|
||||||
|
eleventyConfig.addLayoutAlias("search", "layouts/search.html");
|
||||||
|
eleventyConfig.addLayoutAlias("single", "layouts/single.html");
|
||||||
|
eleventyConfig.addLayoutAlias("splash", "layouts/splash.html");
|
||||||
|
eleventyConfig.addLayoutAlias("tag", "layouts/tag.html");
|
||||||
|
eleventyConfig.addLayoutAlias("tags", "layouts/tags.html");
|
||||||
|
eleventyConfig.addLayoutAlias("gallery", "layouts/gallery");
|
||||||
|
|
||||||
|
// Passthrough copy
|
||||||
|
// don't use .gitignore (allows compiling sass to css into a monitored folder WITHOUT committing it to repo)
|
||||||
|
eleventyConfig.setUseGitIgnore(false);
|
||||||
|
|
||||||
|
//Copy CNAME
|
||||||
|
eleventyConfig.addPassthroughCopy("src/CNAME");
|
||||||
|
|
||||||
|
// Processing configuration
|
||||||
|
eleventyConfig.addPassthroughCopy("src/favicon.ico");
|
||||||
|
eleventyConfig.addPassthroughCopy("src/admin");
|
||||||
|
eleventyConfig.addPassthroughCopy("src/assets");
|
||||||
|
// eleventyConfig.addPassthroughCopy({ "src/_sass": "assets/css" });
|
||||||
|
|
||||||
|
eleventyConfig.addShortcode("post_url", (collection, slug) => {
|
||||||
|
try {
|
||||||
|
if (collection.length < 1) {
|
||||||
|
throw "Collection appears to be empty";
|
||||||
|
}
|
||||||
|
if (!Array.isArray(collection)) {
|
||||||
|
throw "Collection is an invalid type - it must be an array!";
|
||||||
|
}
|
||||||
|
if (typeof slug !== "string") {
|
||||||
|
throw "Slug is an invalid type - it must be a string!";
|
||||||
|
}
|
||||||
|
|
||||||
|
const found = collection.find((p) => p.fileSlug == slug);
|
||||||
|
if (found === 0 || found === undefined) {
|
||||||
|
throw `${slug} not found in specified collection.`;
|
||||||
|
} else {
|
||||||
|
return found.url;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(
|
||||||
|
`RMCG:An error occured while searching for the url to ${slug}. Details:`,
|
||||||
|
e
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Set section
|
||||||
|
|
||||||
|
// Configure BrowserSync to serve the 404 page for missing files
|
||||||
|
eleventyConfig.setBrowserSyncConfig({
|
||||||
|
callbacks: {
|
||||||
|
ready: (_err, browserSync) => {
|
||||||
|
const content_404 = fs.readFileSync("dist/404.html");
|
||||||
|
|
||||||
|
browserSync.addMiddleware("*", (_req, res) => {
|
||||||
|
// render the 404 content instead of redirecting
|
||||||
|
res.write(content_404);
|
||||||
|
res.end();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.setBrowserSyncConfig({
|
||||||
|
files: "./dist/assets/styles/**/*.css",
|
||||||
|
});
|
||||||
|
|
||||||
|
// Merge Data (https://www.11ty.dev/docs/data-deep-merge/)
|
||||||
|
eleventyConfig.setDataDeepMerge(true);
|
||||||
|
|
||||||
|
eleventyConfig.setFrontMatterParsingOptions({
|
||||||
|
excerpt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.setLibrary("md", markdownIt().use(markdownItAnchor));
|
||||||
|
|
||||||
|
eleventyConfig.setLiquidOptions({
|
||||||
|
// dynamicPartials: false,
|
||||||
|
// strictVariables: false,
|
||||||
|
// strictFilters: false,
|
||||||
|
jekyllInclude: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Markdown Configuration
|
||||||
|
const md = require("markdown-it")({
|
||||||
|
html: true,
|
||||||
|
breaks: true,
|
||||||
|
linkify: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.setLibrary(
|
||||||
|
"md",
|
||||||
|
md
|
||||||
|
.use(require("markdown-it-attrs"))
|
||||||
|
.use(require("markdown-it-container"), "", {
|
||||||
|
validate: () => true,
|
||||||
|
render: (tokens, idx) => {
|
||||||
|
if (tokens[idx].nesting === 1) {
|
||||||
|
const classList = tokens[idx].info.trim();
|
||||||
|
return `<div ${classList && `class="${classList}"`}>`;
|
||||||
|
} else {
|
||||||
|
return `</div>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.use(require("markdown-it-fontawesome"))
|
||||||
|
.use(require("markdown-it-footnote"))
|
||||||
|
);
|
||||||
|
|
||||||
|
// override markdown-it-footnote anchor template to use a different unicode character
|
||||||
|
md.renderer.rules.footnote_anchor = (tokens, idx, options, env, slf) => {
|
||||||
|
var id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);
|
||||||
|
|
||||||
|
if (tokens[idx].meta.subId > 0) {
|
||||||
|
id += ":" + tokens[idx].meta.subId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ⇑ with escape code to prevent display as Apple Emoji on iOS */
|
||||||
|
return (
|
||||||
|
' <a href="#fnref' +
|
||||||
|
id +
|
||||||
|
'" class="footnote-backref">\u21d1\uFE0E</a>'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
//for upgrade sanity
|
||||||
|
//eleventyConfig.addPlugin(UpgradeHelper);
|
||||||
|
|
||||||
|
// eleventyConfig.addWatchTarget("./assets/css/");
|
||||||
|
// eleventyConfig.addTransform(
|
||||||
|
// "sass",
|
||||||
|
// async function sassTransform(content, outputPath) {
|
||||||
|
// if (outputPath?.endsWith(".css")) {
|
||||||
|
// const { css } = await sassRender({
|
||||||
|
// data: content,
|
||||||
|
// outputStyle: "compressed",
|
||||||
|
// precision: 3,
|
||||||
|
// });
|
||||||
|
// return css;
|
||||||
|
// }
|
||||||
|
// return content;
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
|
||||||
|
return {
|
||||||
|
templateFormats: ["html", "liquid", "md"],
|
||||||
|
|
||||||
|
pathPrefix: "/",
|
||||||
|
|
||||||
|
passthroughFileCopy: true,
|
||||||
|
|
||||||
|
dir: {
|
||||||
|
input: "src",
|
||||||
|
includes: "_includes",
|
||||||
|
data: "_data",
|
||||||
|
output: "dist",
|
||||||
|
// input: "./", // Equivalent to Jekyll's source property
|
||||||
|
// output: "./_site", // Equivalent to Jekyll's destination property
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function numberOfWords(content) {
|
||||||
|
return content.split(/\s+/g).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
function relativeURL(url, pathPrefix = undefined) {
|
||||||
|
if (pathPrefix !== undefined) {
|
||||||
|
// Fall back on original url filter if pathPrefix is set.
|
||||||
|
return urlFilter(url, pathPrefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pathPrefix == undefined && this.page == undefined) {
|
||||||
|
return urlFilter(url, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Look up the url of the current rendering page, which is accessible via
|
||||||
|
// `this`.
|
||||||
|
//console.log(this); // rmcg
|
||||||
|
|
||||||
|
// rmcg - removed ctx from this.ctx.page.url
|
||||||
|
const currentDir = this.page.url;
|
||||||
|
const filteredUrl = urlFilter(url, "/");
|
||||||
|
|
||||||
|
// Make sure the index.html is expressed.
|
||||||
|
const indexUrl = indexify(filteredUrl);
|
||||||
|
|
||||||
|
// Check that the url doesn't specify a protocol.
|
||||||
|
const u = new URL(indexUrl, "make-relative://");
|
||||||
|
if (u.protocol !== "make-relative:") {
|
||||||
|
// It has a protocol, so just return the filtered URL output.
|
||||||
|
return filteredUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the relative path, or `index.html` if it's the same as the current
|
||||||
|
// page's directory.
|
||||||
|
const relativePath = `${
|
||||||
|
path.relative(currentDir, u.pathname) || "index.html"
|
||||||
|
}`;
|
||||||
|
return relativePath;
|
||||||
|
}
|
|
@ -9,3 +9,81 @@ _site
|
||||||
.jekyll-metadata
|
.jekyll-metadata
|
||||||
|
|
||||||
**/*/premdesigns
|
**/*/premdesigns
|
||||||
|
|
||||||
|
# ---> Eleventy
|
||||||
|
|
||||||
|
#_site
|
||||||
|
|
||||||
|
#package-lock.json
|
||||||
|
css/main.css.map
|
||||||
|
|
||||||
|
# dependency directories
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# config
|
||||||
|
.env*
|
||||||
|
|
||||||
|
# caches
|
||||||
|
.cache
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# eleventy gulp build
|
||||||
|
/dist
|
||||||
|
|
||||||
|
*.log
|
||||||
|
npm-debug.*
|
||||||
|
*.scssc
|
||||||
|
*.swp
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
dist
|
||||||
|
src/_includes/css
|
||||||
|
|
||||||
|
# my chosen output directory.
|
||||||
|
www
|
||||||
|
|
||||||
|
#### From FrontEnd Mentor gitignore. Just to avoid accidentally uploading design files
|
||||||
|
#
|
||||||
|
# Avoid accidental upload of the Sketch and Figma design files
|
||||||
|
#####################################################
|
||||||
|
## Please do not remove lines 5 and 6 - thanks! 🙂 ##
|
||||||
|
#####################################################
|
||||||
|
*.sketch
|
||||||
|
*.fig
|
||||||
|
|
||||||
|
# Avoid accidental XD upload if you convert the design file
|
||||||
|
###############################################
|
||||||
|
## Please do not remove line 12 - thanks! 🙂 ##
|
||||||
|
###############################################
|
||||||
|
*.xd
|
||||||
|
.prettierignore
|
||||||
|
|
||||||
|
# ---> macOS
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
Notes from transitioning blog from Jekyll to 11ty, but still using Jekyll theme Minimal Mistakes.
|
||||||
|
|
||||||
|
Just to see if it reduces that cpu usage. Nope.
|
||||||
|
|
||||||
|
Removed from site.json
|
||||||
|
|
||||||
|
```
|
||||||
|
"post_template": "post",
|
||||||
|
"page_template": "page",
|
||||||
|
"draft_template": "draft"
|
||||||
|
```
|
File diff suppressed because it is too large
Load Diff
35
package.json
35
package.json
|
@ -4,7 +4,14 @@
|
||||||
"description": "Second generation of site using 11ty for building but using Jekyll theme Minimal Mistakes (with mods to make it work)",
|
"description": "Second generation of site using 11ty for building but using Jekyll theme Minimal Mistakes (with mods to make it work)",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"watch:sass": "sass --watch src/_sass/**/*.scss dist/assets/styles/minimal-mistakes.css",
|
||||||
|
"build:sass": "sass --style=compressed src/_sass/minimal-mistakes.scss dist/assets/styles/minimal-mistakes.css",
|
||||||
|
"build:mysass": "sass --style=compressed src/assets/css/main.scss dist/assets/css/main.css",
|
||||||
|
"watch:eleventy": "eleventy --serve",
|
||||||
|
"build:eleventy": "eleventy",
|
||||||
|
"start": "npm-run-all build:sass --parallel watch:*",
|
||||||
|
"build": "npm-run-all build:*",
|
||||||
|
"debug": "DEBUG=Eleventy:* eleventy"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -17,5 +24,29 @@
|
||||||
"jekyll"
|
"jekyll"
|
||||||
],
|
],
|
||||||
"author": "Robert McGovern et all",
|
"author": "Robert McGovern et all",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"@11ty/eleventy": "^2.0.0-beta.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@11ty/eleventy-navigation": "^0.3.5",
|
||||||
|
"@11ty/eleventy-plugin-rss": "^1.2.0",
|
||||||
|
"@11ty/eleventy-plugin-syntaxhighlight": "^4.2.0",
|
||||||
|
"@11ty/eleventy-upgrade-help": "^2.0.5",
|
||||||
|
"autoprefixer": "^10.4.13",
|
||||||
|
"eleventy-plugin-description": "^0.1.5",
|
||||||
|
"eleventy-plugin-toc": "^1.1.5",
|
||||||
|
"eleventy-xml-plugin": "^0.1.0",
|
||||||
|
"fs-extra": "^11.1.0",
|
||||||
|
"markdown-it-anchor": "^8.6.6",
|
||||||
|
"markdown-it-attrs": "^4.1.6",
|
||||||
|
"markdown-it-container": "^3.0.0",
|
||||||
|
"markdown-it-fontawesome": "^0.3.0",
|
||||||
|
"markdown-it-footnote": "^3.0.3",
|
||||||
|
"markdownify": "^0.1.0",
|
||||||
|
"moment": "^2.29.4",
|
||||||
|
"npm-run-all": "^4.1.5",
|
||||||
|
"postcss": "^8.4.21",
|
||||||
|
"sass": "^1.57.1"
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
*.sublime-project
|
||||||
|
*.sublime-workspace
|
||||||
|
vendor
|
||||||
|
.asset-cache
|
||||||
|
.bundle
|
||||||
|
.jekyll-assets-cache
|
||||||
|
.sass-cache
|
||||||
|
assets/js/plugins
|
||||||
|
assets/js/_main.js
|
||||||
|
assets/js/vendor
|
||||||
|
Capfile
|
||||||
|
CHANGELOG
|
||||||
|
CHANGELOG.md
|
||||||
|
config
|
||||||
|
Gemfile
|
||||||
|
Gruntfile.js
|
||||||
|
gulpfile.js
|
||||||
|
LICENSE
|
||||||
|
log
|
||||||
|
node_modules
|
||||||
|
package.json
|
||||||
|
package-lock.json
|
||||||
|
Rakefile
|
||||||
|
README
|
||||||
|
README.md
|
||||||
|
tmp
|
||||||
|
test
|
||||||
|
docs
|
||||||
|
_site
|
||||||
|
#index.html
|
||||||
|
#/docs # ignore Minimal Mistakes /docs
|
||||||
|
#test # ignore Minimal Mistakes /test
|
||||||
|
|
|
@ -360,8 +360,5 @@
|
||||||
"page_ext": "html",
|
"page_ext": "html",
|
||||||
"post_layout": "single",
|
"post_layout": "single",
|
||||||
"page_layout": "page",
|
"page_layout": "page",
|
||||||
"titlecase": true,
|
"titlecase": true
|
||||||
"post_template": "post",
|
|
||||||
"page_template": "page",
|
|
||||||
"draft_template": "draft"
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
---
|
---
|
||||||
layout: post
|
layout: single
|
||||||
title: pretty-terminal-configs
|
title: pretty-terminal-configs
|
||||||
---
|
---
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
<article id="comment{{ include.index }}" class="js-comment comment" itemprop="comment" itemscope itemtype="https://schema.org/Comment">
|
|
||||||
<div class="comment__avatar-wrapper">
|
|
||||||
<img class="comment__avatar" src="https://www.gravatar.com/avatar/{{ include.email }}?d=mm&s=80" alt="{{ include.name }}">
|
|
||||||
</div>
|
|
||||||
<div class="comment__content-wrapper">
|
|
||||||
<h3 class="comment__author" itemprop="author" itemscope itemtype="https://schema.org/Person">
|
|
||||||
{% unless include.url == blank %}
|
|
||||||
<span itemprop="name"><a rel="external nofollow" itemprop="url" href="{{ include.url }}">{{ include.name }}</a></span>
|
|
||||||
{% else %}
|
|
||||||
<span itemprop="name">{{ include.name }}</span>
|
|
||||||
{% endunless %}
|
|
||||||
</h3>
|
|
||||||
<p class="comment__date">
|
|
||||||
{% if include.date %}
|
|
||||||
{% if include.index %}<a href="#comment{{ include.index }}" itemprop="url">{% endif %}
|
|
||||||
<time datetime="{{ include.date | date_to_xmlschema }}" itemprop="datePublished">{{ include.date | date: "%B %-d, %Y at %I:%M %p" }}</time>
|
|
||||||
{% if include.index %}</a>{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
||||||
<div itemprop="text">{{ include.message | markdownify }}</div>
|
|
||||||
</div>
|
|
||||||
</article>
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
---
|
||||||
|
---
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<!--
|
||||||
|
Minimal Mistakes Jekyll Theme 4.24.0 by Michael Rose
|
||||||
|
Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
|
||||||
|
Free for personal and commercial use under the MIT license
|
||||||
|
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||||
|
-->
|
||||||
|
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
|
||||||
|
<head>
|
||||||
|
{% include head.html %}
|
||||||
|
{% include head/custom.html %}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
|
||||||
|
{% include_cached skip-links.html %}
|
||||||
|
{% include_cached browser-upgrade.html %}
|
||||||
|
{% include_cached masthead.html %}
|
||||||
|
|
||||||
|
<div class="initial-content">
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if site.search == true %}
|
||||||
|
<div class="search-content">
|
||||||
|
{% include_cached search/search_form.html %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div id="footer" class="page__footer">
|
||||||
|
<footer>
|
||||||
|
{% include footer/custom.html %}
|
||||||
|
{% include_cached footer.html %}
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include scripts.html %}
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
layout: archive
|
||||||
|
---
|
||||||
|
|
||||||
|
{{ content }}
|
||||||
|
|
||||||
|
<ul class="taxonomy__index">
|
||||||
|
{% assign postsInYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %}
|
||||||
|
{% for year in postsInYear %}
|
||||||
|
<li>
|
||||||
|
<a href="#{{ year.name }}">
|
||||||
|
<strong>{{ year.name }}</strong> <span class="taxonomy__count">{{ year.items | size }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||||
|
{% assign postsByYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %}
|
||||||
|
{% for year in postsByYear %}
|
||||||
|
<section id="{{ year.name }}" class="taxonomy__section">
|
||||||
|
<h2 class="archive__subtitle">{{ year.name }}</h2>
|
||||||
|
<div class="entries-{{ entries_layout }}">
|
||||||
|
{% for post in year.items %}
|
||||||
|
{% include archive-single.html type=entries_layout %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a>
|
||||||
|
</section>
|
||||||
|
{% endfor %}
|
|
@ -36,7 +36,7 @@ layout: default
|
||||||
<aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}">
|
<aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}">
|
||||||
<nav class="toc">
|
<nav class="toc">
|
||||||
<header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header>
|
<header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header>
|
||||||
{% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" skip_no_ids=true %}
|
{% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" %}
|
||||||
</nav>
|
</nav>
|
||||||
</aside>
|
</aside>
|
||||||
{% endif %}
|
{% endif %}
|
|
@ -5,7 +5,7 @@ author_profile: true
|
||||||
read_time: true
|
read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
date: '2019-02-22 00:54:00 +0100'
|
date: 2019-02-22 00:54:00 +01:00
|
||||||
tag: Site
|
tag: Site
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 1 … So the adventure (finally) begins
|
title: Day 1 … So the adventure (finally) begins
|
||||||
date: 2019-05-28 21:32:45 +0159
|
date: 2019-05-28 21:32:45 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg,caminofrances]
|
tags: [camino,caminodesantiago,jakobsweg,caminofrances]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 5 - Unexpectedly Easy
|
title: Day 5 - Unexpectedly Easy
|
||||||
date: 2019-06-01 20:50:46 +0159
|
date: 2019-06-01 20:50:46 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 6 - Bad Day
|
title: Day 6 - Bad Day
|
||||||
date: 2019-06-02 18:48:22 +0159
|
date: 2019-06-02 18:48:22 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 7 - Taking a break
|
title: Day 7 - Taking a break
|
||||||
date: 2019-06-03 22:19:16 +0159
|
date: 2019-06-03 22:19:16 +01:59
|
||||||
category:
|
category:
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 8 - Its my birthday
|
title: Day 8 - Its my birthday
|
||||||
date: 2019-06-04 21:29:37 +0159
|
date: 2019-06-04 21:29:37 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 9 - TWTFSSMTW
|
title: Day 9 - TWTFSSMTW
|
||||||
date: 2019-06-05 21:04:53 +0159
|
date: 2019-06-05 21:04:53 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 10 - A Fountain of Wine
|
title: Day 10 - A Fountain of Wine
|
||||||
date: 2019-06-06 21:57:40 +0159
|
date: 2019-06-06 21:57:40 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 11 - Frustrated
|
title: Day 11 - Frustrated
|
||||||
date: 2019-06-07 23:09:43 +0159
|
date: 2019-06-07 23:09:43 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 12 - An unexpected port
|
title: Day 12 - An unexpected port
|
||||||
date: 2019-06-08 22:43:16 +0159
|
date: 2019-06-08 22:43:16 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 13 - A second wind
|
title: Day 13 - A second wind
|
||||||
date: 2019-06-09 22:38:02 +0159
|
date: 2019-06-09 22:38:02 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 15 - can’t think of a subtitle yet
|
title: Day 15 - can’t think of a subtitle yet
|
||||||
date: 2019-06-11 23:05:50 +0159
|
date: 2019-06-11 23:05:50 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 16 - Off to the races
|
title: Day 16 - Off to the races
|
||||||
date: 2019-06-12 22:20:00 +0159
|
date: 2019-06-12 22:20:00 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 17
|
title: Day 17
|
||||||
date: 2019-06-13 23:00:00 +0159
|
date: 2019-06-13 23:00:00 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 18 - drawn to stop
|
title: Day 18 - drawn to stop
|
||||||
date: 2019-06-14 22:56:21 +0159
|
date: 2019-06-14 22:56:21 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 19
|
title: Day 19
|
||||||
date: 2019-06-15 18:06:55 +0159
|
date: 2019-06-15 18:06:55 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
||||||
share: true
|
share: true
|
||||||
related: true
|
related: true
|
||||||
title: Day 21
|
title: Day 21
|
||||||
date: 2019-06-17 22:38:55 +0159
|
date: 2019-06-17 22:38:55 +01:59
|
||||||
tags: [camino,caminodesantiago,jakobsweg]
|
tags: [camino,caminodesantiago,jakobsweg]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ tags:
|
||||||
- personal
|
- personal
|
||||||
- site
|
- site
|
||||||
category: personal
|
category: personal
|
||||||
date: 2020-04-17 02:18 +0100
|
date: 2020-04-17 02:18:00 +01:00
|
||||||
---
|
---
|
||||||
Long time, no write.
|
Long time, no write.
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ tags:
|
||||||
- swift
|
- swift
|
||||||
- coding-challenges
|
- coding-challenges
|
||||||
category: coding-challenges
|
category: coding-challenges
|
||||||
date: 2020-04-20 15:28 +0100
|
date: 2020-04-20 15:28:00 +01:00
|
||||||
---
|
---
|
||||||
Second one within 13 hours, good lord, that would never do.
|
Second one within 13 hours, good lord, that would never do.
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ tags:
|
||||||
- swift
|
- swift
|
||||||
- coding-challenges
|
- coding-challenges
|
||||||
category: coding-challenges
|
category: coding-challenges
|
||||||
date: 2020-04-20 13:36 +0100
|
date: 2020-04-20 13:36:00 +01:00
|
||||||
---
|
---
|
||||||
As an effort to improve and challenge myself I got a copy of Paul Hudson's [Swift Coding Challenges](https://www.hackingwithswift.com/store/swift-coding-challenges) book and I'm going to work through it and post my thoughts on it and about how I did. I (probably) won't post the answers because that might spoil it for some.
|
As an effort to improve and challenge myself I got a copy of Paul Hudson's [Swift Coding Challenges](https://www.hackingwithswift.com/store/swift-coding-challenges) book and I'm going to work through it and post my thoughts on it and about how I did. I (probably) won't post the answers because that might spoil it for some.
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ gallery:
|
||||||
image_path: https://roadmap.sh/roadmaps/devops.png
|
image_path: https://roadmap.sh/roadmaps/devops.png
|
||||||
alt: DevOps Roadmap
|
alt: DevOps Roadmap
|
||||||
title: DevOps Roadmap
|
title: DevOps Roadmap
|
||||||
date: 2020-04-21 00:44 +0100
|
date: 2020-04-21 00:44:00 +01:00
|
||||||
---
|
---
|
||||||
I mentioned in the [goals post]({% post_url 2020-04-17-goals %}), one of the things I am aiming to do is to start learning web development.
|
I mentioned in the [goals post]({% post_url 2020-04-17-goals %}), one of the things I am aiming to do is to start learning web development.
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ tags:
|
||||||
- caminodesantiago
|
- caminodesantiago
|
||||||
category: camino
|
category: camino
|
||||||
|
|
||||||
date: 2020-05-27 01:45 +0100
|
date: 2020-05-27 01:45:00 +01:00
|
||||||
---
|
---
|
||||||
|
|
||||||
A year ago tomorrow I began the most gruelling, yet immensely satisfying, journey of my life. I set off from my home in Buchholz in der Nordheide Germany, to fly to France to walk the Camino de Santiago.
|
A year ago tomorrow I began the most gruelling, yet immensely satisfying, journey of my life. I set off from my home in Buchholz in der Nordheide Germany, to fly to France to walk the Camino de Santiago.
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
title: What happens when I finish a Frontend Mentor Challenge (or how I build and deploy an 11ty site)
|
title: What happens when I finish a Frontend Mentor Challenge (or how I build and deploy an 11ty site)
|
||||||
tags: [webdev, site, frontendmentor]
|
tags: [webdev, site, frontendmentor]
|
||||||
category: [programming, webdev]
|
category: [programming, webdev]
|
||||||
|
date: 2022-10-15
|
||||||
---
|
---
|
||||||
|
|
||||||
I've been doing challenges from [Frontend Mentor](https://frontendmentor.io) as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript.
|
I've been doing challenges from [Frontend Mentor](https://frontendmentor.io) as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript.
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
title: Moving site from Jekyll to ???
|
title: Moving site from Jekyll to ???
|
||||||
tags: [webdev, site, personal]
|
tags: [webdev, site, personal]
|
||||||
category: [site, webdev, personal]
|
category: [site, webdev, personal]
|
||||||
|
date: 2023-01-21
|
||||||
---
|
---
|
||||||
|
|
||||||
Goal is that at some point in the not to distant future I will move the blog from [Jekyll](https://jekyllrb.com) & the [Minimal Mistakes Theme](https://mmistakes.github.io/minimal-mistakes/) to something built with [11ty](https://www.11ty.dev/).
|
Goal is that at some point in the not to distant future I will move the blog from [Jekyll](https://jekyllrb.com) & the [Minimal Mistakes Theme](https://mmistakes.github.io/minimal-mistakes/) to something built with [11ty](https://www.11ty.dev/).
|
||||||
|
|
Loading…
Reference in New Issue