import chokidar from "chokidar" import express from "express" import fs from "fs" import njk from "nunjucks" import buildNebulosa from "./build.js" const server = express() njk.configure( "./web", { autoescape: true, express: server, lstripBlocks: true, trimBlocks: true, watch: true } ) // Do an initial build of Nebulosa, then watch for changes... buildNebulosa(true) chokidar .watch( ["./src", "./config.yml", "./example-config.yml"], { ignored: ["./src/main.scss", "./src/_settings.scss"] } ) .on( "change", () => { console.log("Detected changes in SCSS or config! Recompiling...") try { buildNebulosa(true) console.log("Saved!") } catch (err) { console.log("Error while compiling!") console.error(err) } } ) 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!"))