import { defineConfig, type Plugin } from 'vite'; import react from '@vitejs/plugin-react'; import { createReadStream, existsSync, cpSync, statSync } from 'fs'; import path from 'path'; function pdfjsAssets(): Plugin { const root = path.resolve('node_modules/pdfjs-dist'); return { name: 'pdfjs-assets', configureServer(server) { server.middlewares.use((req, res, next) => { const url = (req.url || '').split('?')[0]; if (!url.startsWith('/pdfjs/')) return next(); const rel = decodeURIComponent(url.replace(/^\/pdfjs\//, '')); const file = path.resolve(root, rel); if (!file.startsWith(root) || !existsSync(file) || !statSync(file).isFile()) return next(); if (file.endsWith('.bcmap')) res.setHeader('Content-Type', 'application/octet-stream'); createReadStream(file).pipe(res); }); }, closeBundle() { const dest = path.resolve('dist/pdfjs'); if (existsSync(path.join(root, 'cmaps'))) { cpSync(path.join(root, 'cmaps'), path.join(dest, 'cmaps'), { recursive: true }); } if (existsSync(path.join(root, 'standard_fonts'))) { cpSync(path.join(root, 'standard_fonts'), path.join(dest, 'standard_fonts'), { recursive: true }); } }, }; } export default defineConfig({ plugins: [react(), pdfjsAssets()], worker: { format: 'es' }, optimizeDeps: { include: ['pdfjs-dist'] }, server: { host: true, port: 5173, proxy: { '/api': 'http://127.0.0.1:3000', }, }, });