const pluginNavigation = require("@11ty/eleventy-navigation"); const markdownItAttrs = require("markdown-it-attrs"); const markdownIt = require("markdown-it"); const htmlmin = require("html-minifier"); const yaml = require("js-yaml"); const sass = require("sass"); const fs = require("fs"); const markdownLib = markdownIt({ html: true, breaks: true, linkify: true, }).use(markdownItAttrs); module.exports = function (eleventyConfig) { eleventyConfig.addDataExtension("yml", (contents) => yaml.load(contents)); eleventyConfig.addGlobalData("username", "Laureηt"); eleventyConfig.addWatchTarget("./src/scss/"); eleventyConfig.setLibrary("md", markdownLib); eleventyConfig.addPlugin(pluginNavigation); eleventyConfig.setUseGitIgnore(false); eleventyConfig.addPassthroughCopy({ "assets/": "./", }); eleventyConfig.on("eleventy.before", () => { let files = fs.readdirSync("./src/scss/"); files.forEach((file) => { // Compile SASS let result = sass.compile("./src/scss/".concat(file), { style: "compressed", sourceMap: false, }); console.log(`[SCSS] ${file} compiled`); }); }); eleventyConfig.addTransform("htmlmin", function (content, outputPath) { if ( process.env.NODE_ENV === "production" && outputPath && outputPath.endsWith(".html") ) { const minified = htmlmin.minify(content, { collapseWhitespace: true, useShortDoctype: true, removeComments: true, minifyCSS: true, minifyJS: true, }); return minified; } else { return content; } }); eleventyConfig.addShortcode("year", () => { const year = new Date().getFullYear(); return year.toString(); }); return { markdownTemplateEngine: "njk", passthroughFileCopy: true, dir: { includes: "_includes", output: "_site", data: "_data", input: "src", }, }; };