qwik-cms/index.js

64 lines
1.3 KiB
JavaScript

import fs from 'fs'
import express from 'express'
import njk from 'nunjucks'
import njkMarkdown from 'nunjucks-markdown'
import marked from 'marked'
import hljs from 'highlight.js'
import { requestHandler } from './libs/requestHandler.js'
import { mdRenderer } from './libs/mdRenderer.js'
// Load in config
const ConfigFile = fs.readFileSync('./config.json')
const Config = JSON.parse(ConfigFile)
const Server = express()
// Some config
Server.use('/assets', express.static(Config.assetsDir))
const njkEnv = njk.configure(
Config.contentDir,
{
autoescape: true,
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, "<br>").replace(/•/g, "&nbsp;")
},
gfm: true
})
marked.use({ renderer: mdRenderer })
njkMarkdown.register(njkEnv, marked)
// Send all requests to the requestHandler.
Server.get('*', (req, res) => requestHandler(req, res, Config))
// Start the server
Server.listen(
Config.serverPort,
() => {
console.log(`Started server on ${Config.serverPort}.`)
}
)