const markdownIt = require('markdown-it') const mdla = require('markdown-it-link-attributes') module.exports = (config) => { // markdown setup const mdOptions = { html: true, linkify: true, } const markdownLib = markdownIt(mdOptions) .use(mdla, { matcher(href, _c) { return href.match(/\/@\w+/) }, attrs: { rel: 'me', target: '_blank', }, }) .disable('code') config.setLibrary('md', markdownLib) // add collection for pages config.addCollection('pages', (collection) => { let sorted = [] let unsorted = [] let pages = collection.getFilteredByGlob('**/*.md') for (let page of pages) { if (page.data.sort) { if (sorted[page.data.sort]) { sorted.splice(page.data.sort, 0, page) } else { sorted[page.data.sort] = page } } else { unsorted.push(page) } } sorted = sorted.filter(p => p.data.published) return sorted.concat(unsorted) }) // custom filters config.addFilter('makeLowercase', (value) => { if (typeof value === 'string' || value instanceof String) { return value.toLowerCase() } }) // added passthrough for global assets config.addPassthroughCopy('assets') config.addPassthroughCopy('admin') // added passthrough for images in their respective folders config.addPassthroughCopy('_content/**/images/**') // reutrn updated config return { dir: { input: '_content', // content includes: '../_includes', // templates output: '_site', // rendered site data: '../_data', // global data files }, } }