serve assets

This commit is contained in:
monoid 2024-04-16 21:27:25 +09:00
parent dcafbada0d
commit 4db00f3482
1 changed files with 34 additions and 21 deletions

View File

@ -18,6 +18,7 @@ import type { DocumentAccessor, TagAccessor, UserAccessor } from "./model/mod";
import { getTagRounter } from "./route/tags"; import { getTagRounter } from "./route/tags";
import { config } from "dotenv"; import { config } from "dotenv";
import { extname, join } from "node:path";
config(); config();
class ServerApplication { class ServerApplication {
@ -38,7 +39,7 @@ class ServerApplication {
this.diffManger = new DiffManager(this.documentController); this.diffManger = new DiffManager(this.documentController);
this.app = new Koa(); this.app = new Koa();
this.index_html = readFileSync("index.html", "utf-8"); this.index_html = readFileSync("dist/index.html", "utf-8");
} }
private async setup() { private async setup() {
const setting = get_setting(); const setting = get_setting();
@ -195,26 +196,38 @@ class ServerApplication {
} }
} }
private serve_static_file(router: Router) { private serve_static_file(router: Router) {
const static_file_server = (path: string, type: string) => { router.get("/assets/(.*)", async (ctx, next) => {
router.get(`/${path}`, async (ctx, next) => { const setting = get_setting();
const setting = get_setting(); const ext = extname(ctx.path);
ctx.type = type; ctx.type = ext;
ctx.body = createReadStream(path); ctx.body = createReadStream(join("dist",`.${ctx.path}`));
ctx.set("x-content-type-options", "no-sniff"); ctx.set("x-content-type-options", "no-sniff");
if (setting.mode === "development") { if (setting.mode === "development") {
ctx.set("cache-control", "no-cache"); ctx.set("cache-control", "no-cache");
} else { } else {
ctx.set("cache-control", "public, max-age=3600"); ctx.set("cache-control", "public, max-age=3600");
} }
}); });
}; // const static_file_server = (path: string, type: string) => {
const setting = get_setting(); // router.get(`/${path}`, async (ctx, next) => {
static_file_server("dist/bundle.css", "css"); // const setting = get_setting();
static_file_server("dist/bundle.js", "js"); // ctx.type = type;
if (setting.mode === "development") { // ctx.body = createReadStream(path);
static_file_server("dist/bundle.js.map", "text"); // ctx.set("x-content-type-options", "no-sniff");
static_file_server("dist/bundle.css.map", "text"); // if (setting.mode === "development") {
} // ctx.set("cache-control", "no-cache");
// } else {
// ctx.set("cache-control", "public, max-age=3600");
// }
// });
// };
// const setting = get_setting();
// static_file_server("dist/bundle.css", "css");
// static_file_server("dist/bundle.js", "js");
// if (setting.mode === "development") {
// static_file_server("dist/bundle.js.map", "text");
// static_file_server("dist/bundle.css.map", "text");
// }
} }
start_server() { start_server() {
const setting = get_setting(); const setting = get_setting();