diff --git a/scripts/build/bundler.mjs b/scripts/build/bundler.mjs index 126e4252e..b61b703ba 100644 --- a/scripts/build/bundler.mjs +++ b/scripts/build/bundler.mjs @@ -71,7 +71,7 @@ function getBabelConfig(bundle) { return config; } -function* getEsbuildOptions(bundle, options) { +async function* getEsbuildOptions(bundle, options) { const replaceStrings = { "process.env.PRETTIER_TARGET": JSON.stringify(bundle.target), "process.env.NODE_ENV": JSON.stringify("production"), @@ -129,6 +129,11 @@ function* getEsbuildOptions(bundle, options) { ]) { replaceModule[path.join(PROJECT_ROOT, file)] = { contents: "" }; } + + // Prevent `esbuildPluginNodeModulePolyfills` include shim for this module + replaceModule.assert = { + contents: await fs.readFile(path.join(__dirname, "./shims/assert.cjs")), + }; } let shouldMinify = options.minify; @@ -141,10 +146,10 @@ function* getEsbuildOptions(bundle, options) { bundle: true, metafile: true, plugins: [ - bundle.target === "universal" && esbuildPluginNodeGlobalsPolyfills(), - bundle.target === "universal" && esbuildPluginNodeModulePolyfills(), esbuildPluginEvaluate(), esbuildPluginReplaceModule({ ...replaceModule, ...bundle.replaceModule }), + bundle.target === "universal" && esbuildPluginNodeGlobalsPolyfills(), + bundle.target === "universal" && esbuildPluginNodeModulePolyfills(), esbuildPluginTextReplace({ include: /\.[cm]?js$/, // TODO[@fisker]: Use RegExp when possible @@ -243,7 +248,7 @@ async function createBundle(bundle, options) { } const esbuildOptions = getEsbuildOptions(bundle, options); - for (const options of esbuildOptions) { + for await (const options of esbuildOptions) { await runBuild(bundle, options); } diff --git a/scripts/build/shims/assert.cjs b/scripts/build/shims/assert.cjs new file mode 100644 index 000000000..286ef6593 --- /dev/null +++ b/scripts/build/shims/assert.cjs @@ -0,0 +1,4 @@ +const assert = () => {}; +assert.ok = assert; +assert.strictEqual = assert; +module.exports = assert;