copy-pdf-worker.mjs 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/env node
  2. /**
  3. * 把 pdf.js 的 worker 复制到 public/。
  4. *
  5. * ## 为什么要这一步
  6. *
  7. * pdf.js 需要 worker 文件从**同源**加载(`/pdf.worker.js`),
  8. * 但它只有新版 `.min.mjs`,而开发服务器对 `public/` 下的 `.mjs` 不解析,
  9. * 因此复制成 `.js`。
  10. *
  11. * ## 为什么不进 git
  12. *
  13. * 1.3 MB 的构建产物,随 pdfjs 版本变化,没理由占仓库空间。
  14. * 由 `postinstall` 自动生成,克隆后 `npm install` 即得。
  15. */
  16. import { copyFileSync, existsSync, mkdirSync } from 'node:fs';
  17. import { dirname, resolve } from 'node:path';
  18. import { fileURLToPath } from 'node:url';
  19. const here = dirname(fileURLToPath(import.meta.url));
  20. const root = resolve(here, '..');
  21. const src = resolve(root, 'node_modules/pdfjs-dist/build/pdf.worker.min.mjs');
  22. const dest = resolve(root, 'public/pdf.worker.js');
  23. if (!existsSync(src)) {
  24. // 未安装 pdfjs-dist(如只装了部分依赖)时静默跳过,不阻塞 npm install
  25. console.log('[copy-pdf-worker] 跳过:未找到 pdfjs-dist');
  26. process.exit(0);
  27. }
  28. mkdirSync(dirname(dest), { recursive: true });
  29. copyFileSync(src, dest);
  30. console.log('[copy-pdf-worker] 已生成 public/pdf.worker.js');