Files
bknd/app/build-cf.ts
2024-11-16 12:01:47 +01:00

43 lines
980 B
TypeScript

import process from "node:process";
import { $ } from "bun";
import * as esbuild from "esbuild";
import type { BuildOptions } from "esbuild";
const isDev = process.env.NODE_ENV !== "production";
const metafile = true;
const sourcemap = false;
const config: BuildOptions = {
entryPoints: ["worker.ts"],
bundle: true,
format: "esm",
external: ["__STATIC_CONTENT_MANIFEST", "@xyflow/react"],
platform: "browser",
conditions: ["worker", "browser"],
target: "es2022",
sourcemap,
metafile,
minify: !isDev,
loader: {
".html": "copy"
},
outfile: "dist/worker.js"
};
const dist = config.outfile!.split("/")[0];
if (!isDev) {
await $`rm -rf ${dist}`;
}
const result = await esbuild.build(config);
if (result.metafile) {
console.log("writing metafile to", `${dist}/meta.json`);
await Bun.write(`${dist}/meta.json`, JSON.stringify(result.metafile!));
}
if (!isDev) {
await $`gzip ${dist}/worker.js -c > ${dist}/worker.js.gz`;
}