File size: 1,679 Bytes
39371ea | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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();
},
}],
});
|