Files
citation-evidence/vite.config.ts
tegwick dd2f2115bd Implement CE-WP-0009: wire umbrella to @citation-evidence/engine
Add link: dependency on citation-engine, retarget @shared/@engine aliases,
remove in-repo shared/engine copies. ADR-0002 accepted (option B).
172 tests, typecheck, and lint pass.
2026-06-22 19:45:11 +02:00

54 lines
1.8 KiB
TypeScript

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import { viteStaticCopy } from "vite-plugin-static-copy";
import { fileURLToPath } from "node:url";
import { dirname, resolve } from "node:path";
const __dirname = dirname(fileURLToPath(import.meta.url));
export default defineConfig({
plugins: [
react(),
// PDF.js needs its cmaps (character maps for CID fonts) and
// standard fonts (Helvetica/Times/Courier metrics) to position
// text-layer spans correctly. Without them, PDFs with embedded
// CID fonts or unembedded standard fonts get rendered to canvas
// OK but their textLayer overlays land in the wrong place — text
// appears unselectable or selection jumps to a different region.
// We serve both directories straight from `node_modules/pdfjs-dist`.
viteStaticCopy({
targets: [
{
src: resolve(__dirname, "node_modules/pdfjs-dist/cmaps") + "/[!.]*",
dest: "cmaps",
},
{
src: resolve(__dirname, "node_modules/pdfjs-dist/standard_fonts") + "/[!.]*",
dest: "standard_fonts",
},
],
}),
],
resolve: {
alias: {
"@shared": resolve(__dirname, "../citation-engine/src/shared"),
"@engine": resolve(__dirname, "../citation-engine/src/engine"),
"@anchor": resolve(__dirname, "src/anchor"),
"@source": resolve(__dirname, "src/source"),
"@binder": resolve(__dirname, "src/binder"),
"@work": resolve(__dirname, "src/work"),
"@app": resolve(__dirname, "src/app"),
},
},
server: {
fs: {
// Allow Vite to serve /fixtures/pdfs/*.pdf from the project root.
allow: [resolve(__dirname), resolve(__dirname, "../citation-engine")],
},
},
optimizeDeps: {
// pdfjs-dist ships its worker as a .mjs Vite needs to handle.
exclude: ["pdfjs-dist"],
},
});