diff --git a/.changeset/little-peas-teach.md b/.changeset/little-peas-teach.md new file mode 100644 index 000000000000..70e73a651a26 --- /dev/null +++ b/.changeset/little-peas-teach.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-cloudflare': minor +--- + +expose select ESBuild options as adapter options diff --git a/packages/adapter-cloudflare/index.d.ts b/packages/adapter-cloudflare/index.d.ts index e6fb925ff102..a4223736dd11 100644 --- a/packages/adapter-cloudflare/index.d.ts +++ b/packages/adapter-cloudflare/index.d.ts @@ -30,6 +30,20 @@ export interface AdapterOptions { */ exclude?: string[]; }; + /** + * Customize a restricted set of options used by ESBuild to prepare the Cloudflare adapter bundle. + * + * @default {} + */ + esbuildOptions?: { + /** + * Mark a file or a package as external to exclude it from your build. + * Instead of being bundled, the import will be preserved and will be evaluated at run time instead. + * + * @see https://esbuild.github.io/api/#external + */ + external?: import('esbuild').BuildOptions['external']; + }; } export interface RoutesJSONSpec { diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index ccf6887beca8..de0c36d47f1d 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -47,6 +47,7 @@ export default function (options = {}) { await esbuild.build({ platform: 'browser', + external: options?.esbuildOptions?.external, conditions: ['worker', 'browser'], sourcemap: 'linked', target: 'es2022',