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-lang/js/document') const { createFileReader } = require('@terrace-lang/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 } }