initial commit
This commit is contained in:
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}).`);
|
||||
Reference in New Issue
Block a user