nebulosa-css/dev.js

63 lines
1.3 KiB
JavaScript

import chokidar from "chokidar"
import express from "express"
import fs from "fs"
import njk from "nunjucks"
import sass from "sass"
const server = express()
njk.configure(
"./web",
{
autoescape: true,
express: server,
lstripBlocks: true,
trimBlocks: true,
watch: true
}
)
chokidar.watch("./src").on("change", () => {
console.log("Detected changes in SCSS! Recompiling...")
const { css } = sass.compile(
"./src/main.scss",
{
sourceMap: false,
alertColor: true,
style: "compressed"
}
)
console.log("Compile done! Saving changes...")
if (!fs.existsSync("./out"))
fs.mkdirSync("./out")
fs.writeFileSync(
"./out/main.css",
css
)
console.log("Saved!")
})
server.use("/assets", express.static("./out"))
server.get(
"*",
(req, res) => {
const path = req.path
.replace(/^\/|\.\.+|\/$/g, "")
if (fs.existsSync(`web/pages/${path}.njk`))
return res.render(`pages/${path}.njk`)
if (fs.existsSync(`web/pages/${path}/index.njk`))
return res.render(`pages/${path}/index.njk`)
res.status(404).send("Not Found")
}
)
server.listen(12345, () => console.log("Dev server started and listening on port 12345!"))