aboutsummaryrefslogtreecommitdiff
path: root/src/js/build-esm.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/build-esm.ts')
-rw-r--r--src/js/build-esm.ts133
1 files changed, 0 insertions, 133 deletions
diff --git a/src/js/build-esm.ts b/src/js/build-esm.ts
deleted file mode 100644
index 762fc1e56..000000000
--- a/src/js/build-esm.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-import { BuildConfig } from "bun";
-import fs from "fs";
-import path from "path";
-
-const OUT_DIR = path.join(import.meta.dir, "out/");
-const TMP_DIR = path.join(import.meta.dir, "out/tmp");
-
-// Because we do not load sourcemaps, we are not enabling identifiers + whitespace
-// minification on all files, just on the ones without logic or were already bundled
-const minifyList = [
- "node/stream.js",
- "node/crypto.js",
- "node/assert.js",
- "node/assert.strict.js",
- "node/fs.promises.ts",
- "node/path.js",
- "node/path.posix.js",
- "node/path.win32.js",
- "node/stream.promises.js",
- "node/stream.consumers.js",
- "node/stream.web.js",
- "node/url.js",
- "node/zlib.js",
-];
-
-if (fs.existsSync(OUT_DIR + "/modules")) {
- fs.rmSync(OUT_DIR + "/modules", { recursive: true });
-}
-if (fs.existsSync(OUT_DIR + "/modules_dev")) {
- fs.rmSync(OUT_DIR + "/modules_dev", { recursive: true });
-}
-
-function readdirRecursive(root: string): string[] {
- const files = fs.readdirSync(root, { withFileTypes: true });
- return files.flatMap(file => {
- const fullPath = path.join(root, file.name);
- return file.isDirectory() ? readdirRecursive(fullPath) : fullPath;
- });
-}
-
-const entrypoints = ["./bun", "./node", "./thirdparty"]
- .flatMap(dir => readdirRecursive(path.join(import.meta.dir, dir)))
- .filter(file => file.endsWith(".js") || (file.endsWith(".ts") && !file.endsWith(".d.ts")));
-
-const opts = {
- target: "bun",
- naming: {
- entry: "[dir]/[name].[ext]",
- },
- root: import.meta.dir,
- define: {
- "process.platform": JSON.stringify(process.platform),
- "process.arch": JSON.stringify(process.arch),
- "$lazy": "$$BUN_LAZY$$",
- },
-} as const;
-
-const productionOpts = {
- ...opts,
- define: {
- ...opts.define,
- "IS_BUN_DEVELOPMENT": "false",
- },
-};
-
-const devOpts = {
- ...opts,
- define: {
- ...opts.define,
- "IS_BUN_DEVELOPMENT": "true",
- },
-};
-
-const build_prod_minified = await Bun.build({
- entrypoints: entrypoints.filter(file => minifyList.includes(file.slice(import.meta.dir.length + 1))),
- minify: true,
- ...productionOpts,
-});
-
-const build_prod_unminified = await Bun.build({
- entrypoints: entrypoints.filter(file => !minifyList.includes(file.slice(import.meta.dir.length + 1))),
- minify: { syntax: true },
- ...productionOpts,
-});
-
-const build_dev = await Bun.build({
- entrypoints: entrypoints,
- minify: { syntax: false },
- sourcemap: "external",
- ...devOpts,
-});
-
-for (const [build, outdir] of [
- [build_dev, path.join(OUT_DIR, "modules_dev")],
- [build_prod_minified, path.join(OUT_DIR, "modules")],
- [build_prod_unminified, path.join(OUT_DIR, "modules")],
-] as const) {
- if (!build.success) {
- console.error("Build failed");
- throw new AggregateError(build.logs);
- }
-
- if (build.logs.length) {
- console.log("Build has warnings:");
- for (const log of build.logs) {
- console.log(log);
- }
- }
-
- for (const output of build.outputs) {
- fs.mkdirSync(path.join(outdir, path.dirname(output.path)), { recursive: true });
-
- if (output.kind === "entry-point" || output.kind === "chunk") {
- const transformedOutput = (await output.text())
- .replace(/^(\/\/.*?\n)+/g, "")
- .replace(/\$\$BUN_LAZY\$\$/g, 'globalThis[Symbol.for("Bun.lazy")]');
-
- if (transformedOutput.includes("$bundleError")) {
- // attempt to find the string that was passed to $bundleError
- const match = transformedOutput.match(/(?<=\$bundleError\(")(?:[^"\\]|\\.)*?(?="\))/);
- console.error(`Build ${output.path} $bundleError: ${match?.[0] ?? "unknown"}`);
- console.error(`DCE should have removed this function call, but it was not.`);
- process.exit(1);
- }
-
- Bun.write(path.join(outdir, output.path), transformedOutput);
- } else {
- Bun.write(path.join(outdir, output.path), output);
- }
- }
-}
-
-console.log(`Bundled esm modules in ${performance.now().toFixed(2)}ms`);