initial commit
This commit is contained in:
7
scripts/icons.js
Normal file
7
scripts/icons.js
Normal file
@@ -0,0 +1,7 @@
|
||||
import sharp from "sharp";
|
||||
for (const size of [192, 512])
|
||||
await sharp("public/icon.svg")
|
||||
.resize(size, size)
|
||||
.png()
|
||||
.toFile(`public/icon-${size}.png`);
|
||||
console.log("Иконки PWA созданы.");
|
||||
27
scripts/serviceworker.js
Normal file
27
scripts/serviceworker.js
Normal file
@@ -0,0 +1,27 @@
|
||||
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}).`);
|
||||
9
scripts/sync.js
Normal file
9
scripts/sync.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import { getCatalog } from "../server/source.js";
|
||||
const catalog = await getCatalog(true);
|
||||
if (catalog.stale) {
|
||||
console.error(catalog.error);
|
||||
process.exitCode = 1;
|
||||
} else
|
||||
console.log(
|
||||
`Каталог обновлён: ${catalog.files.length} Word-документов, ${catalog.updatedAt}`,
|
||||
);
|
||||
Reference in New Issue
Block a user