build: Pipe wat2wasm directly to esbuild

This commit is contained in:
Remko Tronçon 2022-05-31 19:50:36 +02:00
parent 0cf61783c8
commit f48dd6b86d

View file

@ -2,7 +2,6 @@
const { promisify } = require("util"); const { promisify } = require("util");
const exec = promisify(require("child_process").exec); const exec = promisify(require("child_process").exec);
const fs = require("fs");
const path = require("path"); const path = require("path");
function wasmTextPlugin({ debug } = {}) { function wasmTextPlugin({ debug } = {}) {
@ -23,30 +22,19 @@ function wasmTextPlugin({ debug } = {}) {
}; };
}); });
build.onLoad({ filter: /.*/, namespace: "wasm-text" }, async (args) => { build.onLoad({ filter: /.*/, namespace: "wasm-text" }, async (args) => {
// Would be handy if we could get output from stdout without going through file
const out = `wat2wasm.${Math.floor(
Math.random() * 1000000000
)}.tmp.wasm`;
try {
let flags = []; let flags = [];
if (debug) { if (debug) {
flags.push("--debug-names"); flags.push("--debug-names");
} }
// console.log("wat: compiling %s", args.path); // console.log("wat: compiling %s", args.path);
await exec( const r = await exec(
`wat2wasm ${flags.join(" ")} --output=${out} ${args.path}` `wat2wasm ${flags.join(" ")} --output=- ${args.path}`,
{ encoding: "buffer" }
); );
return { return {
contents: await fs.promises.readFile(out), contents: r.stdout,
loader: "binary", loader: "binary",
}; };
} finally {
try {
await fs.promises.unlink(out);
} catch (e) {
// ignore
}
}
}); });
}, },
}; };