52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import express from "express";
|
|
import { Liquid } from "liquidjs";
|
|
import path from "path";
|
|
|
|
//import { apiRoutes } from "./routes/api";
|
|
//import { authRoutes } from "./routes/auth";
|
|
import { indexRoutes } from "./routes/index";
|
|
|
|
const isProduction = process.env.NODE_ENV === "production";
|
|
const LAYOUTS_DIRECTORY = path.join(__dirname, "layouts");
|
|
const PARTIALS_DIRECTORY = path.join(__dirname, "partials");
|
|
const PUBLIC_DIRECTORY = path.join(__dirname, "public");
|
|
const VIEWS_DIRECTORY = path.join(__dirname, "views");
|
|
|
|
export function startWebserver(config:any) {
|
|
const app = express();
|
|
app.disable("x-powered-by");
|
|
|
|
app.use(express.urlencoded({ extended: true, limit: "1mb" }));
|
|
app.use(express.json({ limit: "1mb" }));
|
|
|
|
// Liquid engine options
|
|
const engine = new Liquid({
|
|
root: [VIEWS_DIRECTORY, PARTIALS_DIRECTORY, LAYOUTS_DIRECTORY],
|
|
cache: isProduction,
|
|
lenientIf: true,
|
|
jsTruthy: true,
|
|
extname: ".liquid",
|
|
});
|
|
|
|
// View engine options
|
|
app.engine("liquid", engine.express());
|
|
app.set("views", [VIEWS_DIRECTORY, PARTIALS_DIRECTORY, LAYOUTS_DIRECTORY]);
|
|
app.set("view engine", "liquid");
|
|
|
|
// Uses public folder
|
|
app.use("/public/", express.static(PUBLIC_DIRECTORY));
|
|
|
|
// Routes
|
|
app.use("/", indexRoutes());
|
|
|
|
// 404 handler
|
|
app.use((req, res) => {
|
|
if (req.accepts("html")) return res.status(404).render("404", { url: req.url, errorCode: 404 });
|
|
else if (req.accepts("json")) return res.status(404).send({ error: "404" });
|
|
else res.status(404).type("txt").send("404");
|
|
});
|
|
|
|
app.listen(3430, "0.0.0.0", () => {
|
|
console.log(`Webserver running on port 3430`);
|
|
});
|
|
} |