qwik-cms/index.js

58 lines
1.2 KiB
JavaScript
Raw Normal View History

2021-07-27 19:24:51 +02:00
import express from 'express'
import njk from 'nunjucks'
2021-08-04 17:48:11 +02:00
import njkAppend from 'nunjucks-append'
2021-08-04 20:08:33 +02:00
import njkMarkdown from 'nunjucks-markdown'
import marked from 'marked'
2021-07-27 19:24:51 +02:00
import fs from 'fs'
2021-08-04 20:08:33 +02:00
import { requestHandler } from './libs/requestHandler.js'
2021-08-04 22:52:49 +02:00
import hljs from 'highlight.js'
2021-07-27 19:24:51 +02:00
2021-07-27 21:04:57 +02:00
2021-08-04 20:08:33 +02:00
const ConfigFile = fs.readFileSync('./config.json')
2021-07-27 19:24:51 +02:00
const Config = JSON.parse(ConfigFile)
const Server = express()
Server.use('/assets', express.static(Config.assetsDir))
2021-08-04 17:48:11 +02:00
const njkEnv = njk.configure(
2021-07-27 19:24:51 +02:00
Config.contentDir,
{
2021-08-04 17:48:11 +02:00
autoescape: false,
2021-07-27 21:57:48 +02:00
watch: true,
trimBlocks: true,
lstripBlocks: true,
2021-07-27 19:24:51 +02:00
express: Server
}
)
2021-08-04 22:52:49 +02:00
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,
smartypants: true,
smartLists: true,
silent: true
})
2021-08-04 17:48:11 +02:00
njkAppend.initialise(njkEnv)
2021-08-04 20:08:33 +02:00
njkMarkdown.register(njkEnv, marked)
2021-07-27 19:24:51 +02:00
2021-07-27 21:04:57 +02:00
Server.get(
'*',
2021-08-04 20:08:33 +02:00
(req, res) => requestHandler(req, res, Config)
2021-07-27 21:04:57 +02:00
)
2021-07-27 19:24:51 +02:00
Server.listen(
Config.serverPort,
() => {
console.log(`Started server on ${Config.serverPort}.`)
}
)