Poindexter/examples/wasm-browser-ts/scripts/copy-assets.mjs

40 lines
1.2 KiB
JavaScript

// Copies WASM artifacts and loader into the public/ folder before Vite dev/build.
// Run as an npm script (predev) from this example directory.
import { cp, mkdir } from 'node:fs/promises';
import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
async function main() {
const root = resolve(__dirname, '../../..');
const exampleDir = resolve(__dirname, '..');
const publicDir = resolve(exampleDir, 'public');
await mkdir(publicDir, { recursive: true });
const sources = [
// WASM artifacts built by `make wasm-build`
resolve(root, 'dist/poindexter.wasm'),
resolve(root, 'dist/wasm_exec.js'),
// ESM loader shipped with the repo's npm folder
resolve(root, 'npm/poindexter-wasm/loader.js'),
];
const targets = [
resolve(publicDir, 'poindexter.wasm'),
resolve(publicDir, 'wasm_exec.js'),
resolve(publicDir, 'loader.js'),
];
for (let i = 0; i < sources.length; i++) {
await cp(sources[i], targets[i]);
console.log(`Copied ${sources[i]} -> ${targets[i]}`);
}
}
main().catch((err) => {
console.error('copy-assets failed:', err);
process.exit(1);
});