53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
const EleventyVitePlugin = require('@11ty/eleventy-plugin-vite')
|
|
const EleventyGoogleFonts = require("eleventy-google-fonts");
|
|
const EleventyFeatherIcons = require('eleventy-plugin-feathericons');
|
|
|
|
const HighlightJS = require('highlight.js')
|
|
const { useDocument } = require('@terrace/js/document')
|
|
const { createFileReader } = require('@terrace/js/readers/node-readline')
|
|
const parsePage = require('./src/parser/page.js');
|
|
|
|
module.exports = function (config) {
|
|
config.addPlugin(EleventyVitePlugin)
|
|
config.addPlugin(EleventyGoogleFonts)
|
|
config.addPlugin(EleventyFeatherIcons)
|
|
|
|
config.addPassthroughCopy('src/public')
|
|
config.addPassthroughCopy('src/styles')
|
|
config.addPassthroughCopy('src/main.js')
|
|
|
|
config.addTemplateFormats('tce')
|
|
config.addExtension('tce', {
|
|
async compile(content) {
|
|
return async () => content
|
|
},
|
|
getData(inputPath) {
|
|
const doc = useDocument(createFileReader(inputPath))
|
|
return parsePage(doc)
|
|
}
|
|
})
|
|
|
|
HighlightJS.registerLanguage('terrace', () => ({
|
|
name: 'Terrace',
|
|
contains: [
|
|
{
|
|
className: 'keyword',
|
|
begin: /^\s*(.*?)(?:\s|$)/,
|
|
relevance: 1
|
|
}
|
|
]
|
|
}))
|
|
|
|
config.addFilter("highlight", function(value, language) {
|
|
return HighlightJS.highlight(value, { language }).value
|
|
})
|
|
|
|
return {
|
|
dir: {
|
|
input: 'src',
|
|
output: '_site'
|
|
},
|
|
passthroughFileCopy: true
|
|
}
|
|
}
|