57 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-09-20 03:38:55 -04:00
import fs from "node:fs";
import path from "node:path";
// import {fileURLToPath} from "node:url";
import dotenv from "dotenv";
import * as esbuild from "esbuild";
// const fileURL = fileURLToPath(import.meta.url);
// let baseDir = path.dirname(fileURL);
// if (fileURL.includes("esrun-")) baseDir = path.join(baseDir, "..", "..", "scripts");
// const rootDir = path.join(baseDir, "..");
// console.log(process.env.npm_package_json);
const rootDir = path.dirname(process.env.npm_package_json!);
dotenv.config();
2023-09-27 16:49:30 -04:00
const modules = ["scripts", "styles"];
2023-09-20 03:38:55 -04:00
const entryPoints: {in: string, out: string}[] = [];
const makeEntry = (mod: string) => ({"in": path.join(rootDir, "src", mod, mod === "styles" ? "index.css" : "index.ts"), "out": mod});
const modulesRequested = process.argv.filter(a => a.startsWith("--module="));
for (const mod of modulesRequested) {
const module = mod?.replace("--module=", "") ?? "";
if (modules.includes(module)) entryPoints.push(makeEntry(module));
}
if (!entryPoints.length) for (const mod of modules) entryPoints.push(makeEntry(mod));
async function runBuild() {
const before = performance.now();
await esbuild.build({
entryPoints: entryPoints,
bundle: true,
outdir: path.join(rootDir, "dist"),
format: "cjs",
2023-09-22 23:57:17 -04:00
target: ["chrome96"],
2023-09-20 03:38:55 -04:00
loader: {
".png": "dataurl",
".gif": "dataurl",
".woff": "dataurl",
".woff2": "dataurl",
".ttf": "dataurl",
".html": "text",
".css": "css"
},
logLevel: "info",
metafile: true,
minify: process.argv.includes("--minify")
});
const after = performance.now();
console.log(`Build actually took ${(after - before).toFixed(2)}ms`);
}
runBuild().catch(console.error);