/** * 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 已是最新", );