Files
ai-spel-frontend/scripts/build-piper.mjs
T
Ein Anderssono ed0a8b90a6
Build and publish frontend / publish (push) Successful in 49s
Serve Piper speech assets from dedicated static service
2026-10-16 07:32:34 +02:00

47 lines
1.3 KiB
JavaScript

import {build} from 'esbuild';
import {mkdir, rm, readFile} from 'node:fs/promises';
import {join, resolve} from 'node:path';
const root = process.cwd();
const publicRoot = join(root, 'public');
const workerRoot = join(publicRoot, 'tts', 'piper-wasm-v1');
await rm(workerRoot, {recursive: true, force: true});
await mkdir(workerRoot, {recursive: true});
await build({
entryPoints: [resolve(root, 'piper-runtime.js')],
outfile: join(publicRoot, 'piper-runtime.js'),
bundle: true,
format: 'iife',
platform: 'browser',
target: ['es2022'],
external: ['fs', 'path'],
sourcemap: false,
legalComments: 'none',
});
await build({
entryPoints: [resolve(root, 'piper-worker.js')],
outfile: join(workerRoot, 'piper-worker.js'),
bundle: true,
format: 'iife',
platform: 'browser',
target: ['es2022'],
external: ['fs', 'path'],
sourcemap: false,
legalComments: 'none',
});
const workerBundle = await readFile(join(workerRoot, 'piper-worker.js'), 'utf8');
for (const route of [
'https://huggingface.co/diffusionstudio/piper-voices/resolve/main/',
'/static/piper-wasm-v1',
'/static/piper-wasm-v1/voices/',
'/static/piper-wasm-v1/onnx/',
]) {
if (!workerBundle.includes(route)) throw new Error(`The Piper worker is missing static route ${route}`);
}
console.log(`Piper worker bundle prepared at ${workerRoot}`);