diff --git a/.changeset/breezy-windows-shout.md b/.changeset/breezy-windows-shout.md new file mode 100644 index 000000000000..276879a8bb39 --- /dev/null +++ b/.changeset/breezy-windows-shout.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-cloudflare': minor +--- + +feat(adapter-cloudflare): allow override esbuild option diff --git a/packages/adapter-cloudflare/index.d.ts b/packages/adapter-cloudflare/index.d.ts index e6fb925ff102..8420901f8e9c 100644 --- a/packages/adapter-cloudflare/index.d.ts +++ b/packages/adapter-cloudflare/index.d.ts @@ -1,4 +1,5 @@ import { Adapter } from '@sveltejs/kit'; +import type { BuildOptions } from 'esbuild'; import './ambient.js'; export default function plugin(options?: AdapterOptions): Adapter; @@ -30,6 +31,15 @@ export interface AdapterOptions { */ exclude?: string[]; }; + + /** + * Additional options to pass to esbuild when bundling `_worker.js` script. + * + * Documentation: https://esbuild.github.io/api/#build + * + * @default undefined + */ + esbuildOptions?: BuildOptions | ((ops: BuildOptions) => BuildOptions); } export interface RoutesJSONSpec { diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index ccf6887beca8..3a10fdb54980 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -45,7 +45,8 @@ export default function (options = {}) { } }); - await esbuild.build({ + /** @type {import('esbuild').BuildOptions} */ + let esbuildOps = { platform: 'browser', conditions: ['worker', 'browser'], sourcemap: 'linked', @@ -58,7 +59,14 @@ export default function (options = {}) { loader: { '.wasm': 'copy' } - }); + }; + + if (typeof options.esbuildOptions === 'object') + esbuildOps = { ...esbuildOps, ...options.esbuildOptions }; + if (typeof options.esbuildOptions === 'function') + esbuildOps = options.esbuildOptions(esbuildOps); + + await esbuild.build(esbuildOps); } }; }