From bce045bddb82309c32e97da8f05de43c84714893 Mon Sep 17 00:00:00 2001 From: Adam Krawitz Date: Thu, 25 Jun 2026 23:08:44 -0700 Subject: [PATCH] fix(dev-server-rollup): add basic support for transform objects The `transform` hook in a Rollup plugin can be either a function or an object with a handler function: https://rollupjs.org/plugin-development/#build-hooks If `transform` is not a function, this adds support for a `transform` object with a `handler` function, instead of silently failing. Fixes #3120 --- .changeset/forty-rice-sleep.md | 5 +++++ packages/dev-server-rollup/src/rollupAdapter.ts | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 .changeset/forty-rice-sleep.md diff --git a/.changeset/forty-rice-sleep.md b/.changeset/forty-rice-sleep.md new file mode 100644 index 0000000000..e895bc2502 --- /dev/null +++ b/.changeset/forty-rice-sleep.md @@ -0,0 +1,5 @@ +--- +'@web/dev-server-rollup': patch +--- + +added support for `transform` objects in Rollup plugins diff --git a/packages/dev-server-rollup/src/rollupAdapter.ts b/packages/dev-server-rollup/src/rollupAdapter.ts index 94d2b95812..3a617a01c5 100644 --- a/packages/dev-server-rollup/src/rollupAdapter.ts +++ b/packages/dev-server-rollup/src/rollupAdapter.ts @@ -412,8 +412,14 @@ export function rollupAdapter( ); let result; - if (typeof rollupPlugin.transform === 'function') { - result = await rollupPlugin.transform?.call( + + const transformHandler = typeof rollupPlugin.transform === 'function' + ? rollupPlugin.transform + : typeof rollupPlugin.transform?.handler === 'function' + ? rollupPlugin.transform.handler + : null; + if (transformHandler) { + result = await transformHandler.call( rollupPluginContext as TransformPluginContext, context.body as string, filePath,