nex_math/frontend/scripts/copy-pdfjs-wasm.mjs

35 lines
1.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* pdf.js 解码 JBIG2 / JPEG2000 扫描页时会在 worker 里按 wasmUrl 取 wasm 运行时,
* 这个目录不由打包器管理,所以每次 dev/build 前把 node_modules 里的文件同步到 public。
*/
import {
copyFileSync,
existsSync,
mkdirSync,
readdirSync,
readFileSync,
} from "node:fs";
import { dirname, join, resolve } from "node:path";
import { fileURLToPath } from "node:url";
const frontend = resolve(dirname(fileURLToPath(import.meta.url)), "..");
const from = join(frontend, "node_modules/pdfjs-dist/wasm");
const to = join(frontend, "public/pdfjs-wasm");
mkdirSync(to, { recursive: true });
const files = readdirSync(from).filter((name) => !name.startsWith("LICENSE"));
let copied = 0;
for (const name of files) {
const source = join(from, name);
const dest = join(to, name);
// 内容没变就不重写:dev server 在跑时改 public 里的同名文件会触发整页刷新并弹覆盖层
if (existsSync(dest) && readFileSync(dest).equals(readFileSync(source))) continue;
copyFileSync(source, dest);
copied += 1;
}
console.log(
copied
? `[pdfjs-wasm] 已同步 ${copied}/${files.length} 个文件 -> public/pdfjs-wasm`
: "[pdfjs-wasm] public/pdfjs-wasm 已是最新",
);