let queue = Promise.resolve(); const { exec } = require("node:child_process"); const build = (fileName) => { if (fileName) console.log(fileName, "changed"); else console.log("building without optimizations"); queue = queue.then( () => new Promise((resolve) => { exec( "npm run build:stdlib && npm run build:plugins && npm run build:core", { cwd: __dirname, env: { ...process.env, NO_MIN: true } }, (error) => { if (error) console.error(error); else console.log(fileName || "", "build completed"); resolve(); }, ); }), ); }; const options = { ignored: /\/(?:toml|plugins|pyscript)\.[mc]?js$/, persistent: true, }; require("chokidar").watch("./src", options).on("change", build); build();