import express from 'express' import njk from 'nunjucks' import njkAppend from 'nunjucks-append' import njkMarkdown from 'nunjucks-markdown' import marked from 'marked' import fs from 'fs' import { requestHandler } from './libs/requestHandler.js' import hljs from 'highlight.js' const ConfigFile = fs.readFileSync('./config.json') const Config = JSON.parse(ConfigFile) const Server = express() Server.use('/assets', express.static(Config.assetsDir)) const njkEnv = njk.configure( Config.contentDir, { autoescape: false, watch: true, trimBlocks: true, lstripBlocks: true, express: Server } ) marked.setOptions({ highlight: (code, lang) => { const language = hljs.getLanguage(lang) ? lang : 'plaintext' return hljs.highlight(language, code) .value.replace(/\n/g, "
").replace(/•/g, " ") }, gfm: true, smartypants: true, smartLists: true, silent: true }) njkAppend.initialise(njkEnv) njkMarkdown.register(njkEnv, marked) Server.get( '*', (req, res) => requestHandler(req, res, Config) ) Server.listen( Config.serverPort, () => { console.log(`Started server on ${Config.serverPort}.`) } )