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
|
||||
|
||||
**/*/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)",
|
||||
"main": "index.js",
|
||||
"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": {
|
||||
"type": "git",
|
||||
|
@ -17,5 +24,29 @@
|
|||
"jekyll"
|
||||
],
|
||||
"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",
|
||||
"post_layout": "single",
|
||||
"page_layout": "page",
|
||||
"titlecase": true,
|
||||
"post_template": "post",
|
||||
"page_template": "page",
|
||||
"draft_template": "draft"
|
||||
"titlecase": true
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
---
|
||||
layout: post
|
||||
layout: single
|
||||
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 %}">
|
||||
<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>
|
||||
{% 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>
|
||||
</aside>
|
||||
{% endif %}
|
|
@ -5,7 +5,7 @@ author_profile: true
|
|||
read_time: true
|
||||
share: true
|
||||
related: true
|
||||
date: '2019-02-22 00:54:00 +0100'
|
||||
date: 2019-02-22 00:54:00 +01:00
|
||||
tag: Site
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
title: Day 7 - Taking a break
|
||||
date: 2019-06-03 22:19:16 +0159
|
||||
date: 2019-06-03 22:19:16 +01:59
|
||||
category:
|
||||
tags: [camino,caminodesantiago,jakobsweg]
|
||||
---
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
title: Day 17
|
||||
date: 2019-06-13 23:00:00 +0159
|
||||
date: 2019-06-13 23:00:00 +01:59
|
||||
tags: [camino,caminodesantiago,jakobsweg]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
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]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
title: Day 19
|
||||
date: 2019-06-15 18:06:55 +0159
|
||||
date: 2019-06-15 18:06:55 +01:59
|
||||
tags: [camino,caminodesantiago,jakobsweg]
|
||||
---
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ read_time: true
|
|||
share: true
|
||||
related: true
|
||||
title: Day 21
|
||||
date: 2019-06-17 22:38:55 +0159
|
||||
date: 2019-06-17 22:38:55 +01:59
|
||||
tags: [camino,caminodesantiago,jakobsweg]
|
||||
---
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ tags:
|
|||
- personal
|
||||
- site
|
||||
category: personal
|
||||
date: 2020-04-17 02:18 +0100
|
||||
date: 2020-04-17 02:18:00 +01:00
|
||||
---
|
||||
Long time, no write.
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ tags:
|
|||
- swift
|
||||
- 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.
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ tags:
|
|||
- swift
|
||||
- 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.
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ gallery:
|
|||
image_path: https://roadmap.sh/roadmaps/devops.png
|
||||
alt: 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.
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ tags:
|
|||
- caminodesantiago
|
||||
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.
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
title: What happens when I finish a Frontend Mentor Challenge (or how I build and deploy an 11ty site)
|
||||
tags: [webdev, site, frontendmentor]
|
||||
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.
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
title: Moving site from Jekyll to ???
|
||||
tags: [webdev, site, 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/).
|
||||
|
|
Loading…
Reference in New Issue