UNPKG

ckn.backend

Version:

CKN Framework for Backend

64 lines (58 loc) 1.91 kB
import {File} from 'ckn.stream'; import {Middleware} from "../core/Middleware.js"; import express from "express"; import webpack from "webpack"; import path from "path"; import fs from "fs"; class FrontendMiddleware extends Middleware { constructor() { super(); this.priority = 5; this.clientFolder = './client/'; this.appFolder = './apps'; this.entry = ['./apps/app.js']; this.output = 'app.js'; } changeClientFolder(folder) { this.clientFolder = folder return this; } changeAppFolder(folder) { this.appFolder = folder; return this; } changeOutputFileName(file) { this.output = file; return this; } async onStartingServer(backend, next) { backend.server.use("/ckn.core/", express.static("./node_modules/ckn.core/")); backend.server.use("/ckn.frontend/", express.static("./node_modules/ckn.frontend/")); backend.server.use("/ckn.frontend/ui", express.static("./node_modules/ckn.frontend/ui")); if (!fs.existsSync(path.resolve(process.cwd(), this.appFolder))) { fs.mkdirSync(path.resolve(process.cwd(), this.appFolder)); } if (!fs.existsSync(path.resolve(process.cwd(), this.clientFolder))) { fs.mkdirSync(path.resolve(process.cwd(), this.clientFolder)); } webpack({ entry: this.entry, mode: 'production', output: { path: path.resolve(process.cwd(), this.clientFolder), filename: this.output }, optimization: { minimize: false } }, async (err, stats) => { if (err || stats.hasErrors()) { throw new Error(stats); } else { next(); } }); } } export {FrontendMiddleware}