mirror of
https://github.com/apophenia-news/apophenia.news.git
synced 2026-03-17 11:21:01 +00:00
31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
import fs from "node:fs/promises";
|
|
import path from "node:path";
|
|
import { PUBLIC, SRC } from "./constants.mjs";
|
|
import { renderRobots, renderRss, renderSitemap } from "./renderers.mjs";
|
|
|
|
export const ensureCleanGenerated = async () => {
|
|
await fs.mkdir(SRC, { recursive: true });
|
|
const children = await fs.readdir(SRC, { withFileTypes: true });
|
|
const keep = new Set(["assets"]);
|
|
await Promise.all(
|
|
children
|
|
.filter((d) => d.isDirectory() && !keep.has(d.name))
|
|
.map((d) => fs.rm(path.join(SRC, d.name), { recursive: true, force: true }))
|
|
);
|
|
};
|
|
|
|
export const writePage = async (parts, html) => {
|
|
const filePath = path.join(...parts);
|
|
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
await fs.writeFile(filePath, html, "utf8");
|
|
};
|
|
|
|
export const writeDiscoveryFiles = async (articles, authors) => {
|
|
await fs.mkdir(PUBLIC, { recursive: true });
|
|
await Promise.all([
|
|
fs.writeFile(path.join(PUBLIC, "rss.xml"), renderRss(articles), "utf8"),
|
|
fs.writeFile(path.join(PUBLIC, "sitemap.xml"), renderSitemap(articles, authors), "utf8"),
|
|
fs.writeFile(path.join(PUBLIC, "robots.txt"), renderRobots(), "utf8")
|
|
]);
|
|
};
|