ptato
ptato
DDeno
Created by ptato on 3/5/2024 in #help
How to polyfill node imports when bundling with the deno version of esbuild?
Hello, I am trying to run esbuild using https://deno.land/x/esbuild to bundle a Deno project into a single file. I am using the denoPlugins from https://deno.land/x/esbuild_deno_loader to resolve npm imports, but I need all node std lib imports to be polyfilled as well (which the plugin doesn't do because it assumes youre running the bundle using Deno). My intended compile target is cloudflare workers so i need the node imports to be polyfilled. I tried using https://www.npmjs.com/package/esbuild-plugin-polyfill-node alongside the denoPlugins but I get the error Cannot find package '@jspm/core'. this is my general setup:
import * as esbuild from "https://deno.land/x/esbuild@v0.20.1/mod.js";
import { denoPlugins } from "https://deno.land/x/esbuild_deno_loader@0.8.5/mod.ts";
import { polyfillNode } from "npm:@rivet-gg/esbuild-plugin-polyfill-node@^0.4.0";

await esbuild.build({
entryPoints: [join(project.path, "_gen", "entrypoint.ts")],
outfile: join(project.path, "_gen", "/output.js"),
format: "esm",
platform: "neutral",
plugins: [
...denoPlugins(),
polyfillNode(),
],
external: ["*.wasm", "*.wasm?module"],
bundle: true,
// minify: true,
});

await esbuild.stop();
import * as esbuild from "https://deno.land/x/esbuild@v0.20.1/mod.js";
import { denoPlugins } from "https://deno.land/x/esbuild_deno_loader@0.8.5/mod.ts";
import { polyfillNode } from "npm:@rivet-gg/esbuild-plugin-polyfill-node@^0.4.0";

await esbuild.build({
entryPoints: [join(project.path, "_gen", "entrypoint.ts")],
outfile: join(project.path, "_gen", "/output.js"),
format: "esm",
platform: "neutral",
plugins: [
...denoPlugins(),
polyfillNode(),
],
external: ["*.wasm", "*.wasm?module"],
bundle: true,
// minify: true,
});

await esbuild.stop();
4 replies