MiniCPM5-2B-WebGPU-Pi-HTTP / app /vite.config.mjs
Mike0021's picture
Enable browser HTTP commands with CORS-aware errors and bounded requests
39371ea verified
Raw History Blame Contribute Delete
1.68 kB
import { defineConfig } from 'vite';
import { cpSync, mkdirSync, readdirSync, createReadStream, statSync } from 'node:fs';
import { resolve } from 'node:path';
import { collectLicenses } from './scripts/licenses.mjs';
import { piBrowser } from './scripts/pi-browser.mjs';
export default defineConfig({
base: './',
worker: { format: 'es' },
optimizeDeps: { exclude: ['@earendil-works/pi-tui'], include: ['events', 'buffer'] },
resolve: { alias: { '@huggingface/transformers': resolve('node_modules/@huggingface/transformers/dist/transformers.web.js') } },
server: { proxy: { '/models': 'http://127.0.0.1:8765' } },
preview: { proxy: { '/models': 'http://127.0.0.1:8765' } },
plugins: [piBrowser(), {
name: 'local-ort-runtime',
configureServer(server) {
server.middlewares.use('/runtime', (req, res, next) => {
const name = req.url.split('?')[0];
if (!/^\/ort-wasm-[\w.-]+\.(wasm|mjs)$/.test(name)) return next();
const file = resolve('node_modules/onnxruntime-web/dist', name.slice(1));
try {
res.setHeader('Content-Type', name.endsWith('.wasm') ? 'application/wasm' : 'text/javascript');
res.setHeader('Content-Length', statSync(file).size);
createReadStream(file).pipe(res);
} catch { res.statusCode = 404; res.end(); }
});
},
async closeBundle() {
mkdirSync('dist/runtime', { recursive: true });
for (const file of readdirSync('node_modules/onnxruntime-web/dist')) {
if (/^ort-wasm-.*\.(wasm|mjs)$/.test(file)) cpSync('node_modules/onnxruntime-web/dist/' + file, 'dist/runtime/' + file);
}
await collectLicenses();
},
}],
});