89 lines
2.2 KiB
JavaScript
89 lines
2.2 KiB
JavaScript
import { cp, mkdir, rm, writeFile } from "node:fs/promises";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import { build } from "tsup";
|
|
import { createManifest } from "./manifest.mjs";
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
const projectRoot = path.resolve(__dirname, "..");
|
|
const buildTarget = process.env.BUILD_TARGET === "release" ? "release" : "development";
|
|
const distDir = path.join(
|
|
projectRoot,
|
|
buildTarget === "release" ? "dist-release" : "dist"
|
|
);
|
|
|
|
await rm(distDir, { recursive: true, force: true });
|
|
await mkdir(path.join(distDir, "content"), { recursive: true });
|
|
await mkdir(path.join(distDir, "background"), { recursive: true });
|
|
await mkdir(path.join(distDir, "popup"), { recursive: true });
|
|
|
|
await build({
|
|
entry: {
|
|
index: path.join(projectRoot, "src/content/index.ts"),
|
|
"market-page-bridge": path.join(
|
|
projectRoot,
|
|
"src/content/market/page-bridge.ts"
|
|
)
|
|
},
|
|
format: ["iife"],
|
|
platform: "browser",
|
|
target: "chrome114",
|
|
outDir: path.join(distDir, "content"),
|
|
clean: false,
|
|
splitting: false,
|
|
sourcemap: false,
|
|
minify: false,
|
|
outExtension() {
|
|
return { js: ".js" };
|
|
}
|
|
});
|
|
|
|
await build({
|
|
entry: {
|
|
index: path.join(projectRoot, "src/background/index.ts")
|
|
},
|
|
format: ["iife"],
|
|
platform: "browser",
|
|
target: "chrome114",
|
|
outDir: path.join(distDir, "background"),
|
|
clean: false,
|
|
splitting: false,
|
|
sourcemap: false,
|
|
minify: false,
|
|
outExtension() {
|
|
return { js: ".js" };
|
|
}
|
|
});
|
|
|
|
await build({
|
|
entry: {
|
|
index: path.join(projectRoot, "src/popup/index.ts")
|
|
},
|
|
format: ["iife"],
|
|
platform: "browser",
|
|
target: "chrome114",
|
|
outDir: path.join(distDir, "popup"),
|
|
clean: false,
|
|
splitting: false,
|
|
sourcemap: false,
|
|
minify: false,
|
|
outExtension() {
|
|
return { js: ".js" };
|
|
}
|
|
});
|
|
|
|
await writeFile(
|
|
path.join(distDir, "manifest.json"),
|
|
`${JSON.stringify(createManifest({ target: buildTarget }), null, 2)}\n`
|
|
);
|
|
await cp(
|
|
path.join(projectRoot, "src/popup/index.html"),
|
|
path.join(distDir, "popup/index.html")
|
|
);
|
|
await cp(
|
|
path.join(projectRoot, "src/assets"),
|
|
path.join(distDir, "assets"),
|
|
{ recursive: true }
|
|
);
|