35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
/**
|
||
* 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 已是最新",
|
||
);
|