+
+
+
+
- {% if title %}
-
-
-
-
-
- {{ content | safe }}
-
+
+
diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1a6bd45 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +package-lock.json binary diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..8b7e202 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,88 @@ +const path = require("path"); + +module.exports = grunt => { + grunt.initConfig({ + pkg: grunt.file.readJSON("package.json"), + clean: { + default: ["dist/"], + }, + exec: { + eleventy: "npx @11ty/eleventy", + }, + replace: { + dev: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>+" + new Date().toISOString().slice(0, 19).replace(/[-:T]/g, "") + } + ], + overwrite: true + }, + deploy: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>" + } + ], + overwrite: true + }, + }, + webpack: { + options: { + entry: "./src/main/js/index.js", + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: [".js"], + }, + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist/"), + }, + }, + dev: { + mode: "development", + devtool: "inline-source-map", + }, + deploy: { + mode: "production", + }, + }, + }); + + grunt.loadNpmTasks("grunt-contrib-clean"); + grunt.loadNpmTasks("grunt-exec"); + grunt.loadNpmTasks("grunt-text-replace"); + grunt.loadNpmTasks("grunt-webpack"); + + grunt.registerTask("dev", [ + // Pre + "clean", + // Generate site + "exec:eleventy", + // Compile JS + "webpack:dev", + "replace:dev", + ]); + grunt.registerTask("deploy", [ + // Pre + "clean", + // Generate site + "exec:eleventy", + // Compile JS + "webpack:deploy", + "replace:deploy", + ]); + + grunt.registerTask("default", ["dev"]); +}; diff --git a/README.md b/README.md new file mode 100644 index 0000000..b404219 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# Blog +My personal blog. + +## Development +### Requirements +* [npm](https://www.npmjs.com/) + +### Setting up +```shell script +# Install dependencies (only needed once) +$> npm ci +``` + +### Building +```shell script +# Build the blog in `dist/` for development +$> npm run dev +# Build the blog in `dist/` for deployment +$> npm run deploy +``` + +You may need to change the `pathprefix` option of Eleventy when using WebStorm so that the root of the blog is changed +to `blog/dist/` instead of `blog/`. diff --git a/package-lock.json b/package-lock.json index 1a73252..3d9c29f 100644 Binary files a/package-lock.json and b/package-lock.json differ diff --git a/package.json b/package.json index 01957ad..56b68e6 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,23 @@ }, "private": true, "scripts": { - "build": "npx @11ty/eleventy", - "build:server": "npx @11ty/eleventy --serve" + "clean": "grunt clean", + "dev": "grunt dev", + "dev:server": "grunt dev:server", + "deploy": "grunt deploy" }, "dependencies": { - "@fwdekker/template": "^0.0.13", - "@11ty/eleventy": "^0.10.0" + "@fwdekker/template": "^0.0.13" + }, + "devDependencies": { + "@11ty/eleventy": "^0.10.0", + "grunt": "^1.1.0", + "grunt-cli": "^1.3.2", + "grunt-contrib-clean": "^2.0.0", + "grunt-exec": "^3.0.0", + "grunt-text-replace": "^0.4.0", + "grunt-webpack": "^3.1.3", + "webpack": "^4.42.1", + "webpack-cli": "^3.3.11" } } diff --git a/src/main/_data/site.json b/src/main/_data/site.json index cd5dfcc..43abd4a 100644 --- a/src/main/_data/site.json +++ b/src/main/_data/site.json @@ -1,5 +1,5 @@ { - "url": "https://fwdekker.com/blog/", + "baseurl": "/blog/", "title": "FWDekker's blog", "description": "Felix W. Dekker's blog", "author": "Felix W. Dekker", diff --git a/src/main/_includes/default.njk b/src/main/_includes/default.njk index 5a391f6..4763413 100644 --- a/src/main/_includes/default.njk +++ b/src/main/_includes/default.njk @@ -10,46 +10,44 @@