70 lines
1.5 KiB
JavaScript
70 lines
1.5 KiB
JavaScript
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 = []
|
|
const 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)
|
|
}
|
|
}
|
|
|
|
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")
|
|
// 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
|
|
}
|
|
}
|
|
}
|