import * as esbuild from "esbuild"; import { cpSync, mkdirSync } from "fs"; const common = { bundle: true, sourcemap: true, target: "es2020", }; async function build(browser) { const outdir = `dist/${browser}`; mkdirSync(outdir, { recursive: true }); await Promise.all([ esbuild.build({ ...common, entryPoints: ["src/content/index.ts"], outfile: `${outdir}/content/index.js`, format: "iife", }), esbuild.build({ ...common, entryPoints: ["src/background/service-worker.ts"], outfile: `${outdir}/background/service-worker.js`, format: "iife", }), esbuild.build({ ...common, entryPoints: ["src/injected/page-script.ts"], outfile: `${outdir}/injected/page-script.js`, format: "iife", }), esbuild.build({ ...common, entryPoints: ["src/options/options.ts"], outfile: `${outdir}/options/options.js`, format: "iife", }), ]); cpSync("src/options/options.html", `${outdir}/options/options.html`); cpSync(`manifest.${browser}.json`, `${outdir}/manifest.json`); } await build("chrome"); await build("firefox"); console.log("Build complete.");