50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
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.");
|