Files
psu-schedule/scripts/serviceworker.js
2026-10-16 22:08:45 +03:00

28 lines
821 B
JavaScript

import { readdir, readFile, writeFile } from "node:fs/promises";
import { createHash } from "node:crypto";
const assets = [
"/",
"/manifest.webmanifest",
"/icon.svg",
"/icon-192.png",
"/icon-512.png",
...(await readdir("dist/assets"))
.filter((f) => /\.(js|css)$/.test(f))
.map((f) => "/assets/" + f),
...(await readdir("dist/fonts"))
.filter((f) => f === "RobotoFlex-Variable.ttf")
.map((f) => "/fonts/" + f),
];
const rev = createHash("sha256")
.update(assets.join("|"))
.digest("hex")
.slice(0, 12);
const template = await readFile("public/sw.js", "utf8");
await writeFile(
"dist/sw.js",
template
.replace("__REVISION__", rev)
.replace("/* build assets */ []", JSON.stringify(assets)),
);
console.log(`Офлайн-кэш: ${assets.length} ресурсов (${rev}).`);