From 9729c3aa35bbf6facef0f24e8f75b3b963522b39 Mon Sep 17 00:00:00 2001
From: Mikhail Bashkirov
Date: Wed, 3 Dec 2025 11:58:01 +0100
Subject: [PATCH 1/2] Revert "feat(rollup-plugin-html): suport transform on
input html"
This reverts commit 44fff3490c1c1a13ae4ffe7ff42f54fcaa4d031c.
---
.../src/output/createHTMLOutput.ts | 12 +++-----
.../src/output/getOutputHTML.ts | 28 +++++--------------
.../src/rollupPluginHTML.ts | 28 +++++--------------
.../test/rollup-plugin-html.test.ts | 14 ++--------
.../test/src/output/getOutputHTML.test.ts | 4 +--
5 files changed, 22 insertions(+), 64 deletions(-)
diff --git a/packages/rollup-plugin-html/src/output/createHTMLOutput.ts b/packages/rollup-plugin-html/src/output/createHTMLOutput.ts
index 4f3c1f646..cb2224267 100644
--- a/packages/rollup-plugin-html/src/output/createHTMLOutput.ts
+++ b/packages/rollup-plugin-html/src/output/createHTMLOutput.ts
@@ -15,8 +15,7 @@ export interface CreateHTMLAssetParams {
input: InputData;
emittedAssets: EmittedAssets;
generatedBundles: GeneratedBundle[];
- inputExternalTransformHtmlFns: TransformHtmlFunction[];
- outputExternalTransformHtmlFns: TransformHtmlFunction[];
+ externalTransformHtmlFns: TransformHtmlFunction[];
pluginOptions: RollupPluginHTMLOptions;
defaultInjectDisabled: boolean;
serviceWorkerPath: string;
@@ -31,8 +30,7 @@ export async function createHTMLAsset(params: CreateHTMLAssetParams): Promise;
- inputExternalTransformHtmlFns?: TransformHtmlFunction[];
- outputExternalTransformHtmlFns?: TransformHtmlFunction[];
+ externalTransformHtmlFns?: TransformHtmlFunction[];
defaultInjectDisabled: boolean;
serviceWorkerPath: string;
injectServiceWorker: boolean;
@@ -32,8 +31,7 @@ export async function getOutputHTML(params: GetOutputHTMLParams) {
const {
pluginOptions,
entrypointBundles,
- inputExternalTransformHtmlFns,
- outputExternalTransformHtmlFns,
+ externalTransformHtmlFns,
input,
outputDir,
emittedAssets,
@@ -46,20 +44,8 @@ export async function getOutputHTML(params: GetOutputHTMLParams) {
const { default: defaultBundle, ...multiBundles } = entrypointBundles;
const { absoluteSocialMediaUrls = true, rootDir = process.cwd() } = pluginOptions;
- let inputHtml = input.html;
-
- // run transform functions on input HTML
- const inputTransforms = [...(inputExternalTransformHtmlFns ?? [])];
- for (const transform of inputTransforms) {
- inputHtml = await transform(inputHtml, {
- bundle: defaultBundle,
- bundles: multiBundles,
- htmlFileName: input.name,
- });
- }
-
// inject rollup output into HTML
- let document = parse(inputHtml);
+ let document = parse(input.html);
if (pluginOptions.extractAssets !== false) {
injectedUpdatedAssetPaths({
document,
@@ -89,17 +75,17 @@ export async function getOutputHTML(params: GetOutputHTMLParams) {
let outputHtml = serialize(document);
- const outputTransforms = [...(outputExternalTransformHtmlFns ?? [])];
+ const transforms = [...(externalTransformHtmlFns ?? [])];
if (pluginOptions.transformHtml) {
if (Array.isArray(pluginOptions.transformHtml)) {
- outputTransforms.push(...pluginOptions.transformHtml);
+ transforms.push(...pluginOptions.transformHtml);
} else {
- outputTransforms.push(pluginOptions.transformHtml);
+ transforms.push(pluginOptions.transformHtml);
}
}
// run transform functions on output HTML
- for (const transform of outputTransforms) {
+ for (const transform of transforms) {
outputHtml = await transform(outputHtml, {
bundle: defaultBundle,
bundles: multiBundles,
diff --git a/packages/rollup-plugin-html/src/rollupPluginHTML.ts b/packages/rollup-plugin-html/src/rollupPluginHTML.ts
index 7b2806ec1..ffe1a0880 100644
--- a/packages/rollup-plugin-html/src/rollupPluginHTML.ts
+++ b/packages/rollup-plugin-html/src/rollupPluginHTML.ts
@@ -18,10 +18,7 @@ import { emitAssets } from './output/emitAssets.js';
export interface RollupPluginHtml extends Plugin {
api: {
getInputs(): InputData[];
- addHtmlTransformer(
- transformHtmlFunction: TransformHtmlFunction,
- transformStage?: 'input' | 'output',
- ): void;
+ addHtmlTransformer(transformHtmlFunction: TransformHtmlFunction): void;
disableDefaultInject(): void;
addOutput(name: string): Plugin;
};
@@ -31,8 +28,7 @@ export function rollupPluginHTML(pluginOptions: RollupPluginHTMLOptions = {}): R
const multiOutputNames: string[] = [];
let inputs: InputData[] = [];
let generatedBundles: GeneratedBundle[] = [];
- let inputExternalTransformHtmlFns: TransformHtmlFunction[] = [];
- let outputExternalTransformHtmlFns: TransformHtmlFunction[] = [];
+ let externalTransformHtmlFns: TransformHtmlFunction[] = [];
let defaultInjectDisabled = false;
let serviceWorkerPath = '';
let injectServiceWorker = false;
@@ -42,8 +38,7 @@ export function rollupPluginHTML(pluginOptions: RollupPluginHTMLOptions = {}): R
function reset() {
inputs = [];
generatedBundles = [];
- inputExternalTransformHtmlFns = [];
- outputExternalTransformHtmlFns = [];
+ externalTransformHtmlFns = [];
}
return {
@@ -151,8 +146,7 @@ export function rollupPluginHTML(pluginOptions: RollupPluginHTMLOptions = {}): R
inputs,
emittedAssets,
generatedBundles,
- inputExternalTransformHtmlFns,
- outputExternalTransformHtmlFns,
+ externalTransformHtmlFns,
pluginOptions,
defaultInjectDisabled,
serviceWorkerPath,
@@ -171,15 +165,8 @@ export function rollupPluginHTML(pluginOptions: RollupPluginHTMLOptions = {}): R
return inputs;
},
- addHtmlTransformer(
- transformHtmlFunction: TransformHtmlFunction,
- transformStage: 'input' | 'output' = 'output',
- ) {
- if (transformStage === 'input') {
- inputExternalTransformHtmlFns.push(transformHtmlFunction);
- } else {
- outputExternalTransformHtmlFns.push(transformHtmlFunction);
- }
+ addHtmlTransformer(transformHtmlFunction: TransformHtmlFunction) {
+ externalTransformHtmlFns.push(transformHtmlFunction);
},
disableDefaultInject() {
@@ -218,8 +205,7 @@ export function rollupPluginHTML(pluginOptions: RollupPluginHTMLOptions = {}): R
inputs,
emittedAssets,
generatedBundles,
- inputExternalTransformHtmlFns,
- outputExternalTransformHtmlFns,
+ externalTransformHtmlFns,
pluginOptions,
defaultInjectDisabled,
serviceWorkerPath,
diff --git a/packages/rollup-plugin-html/test/rollup-plugin-html.test.ts b/packages/rollup-plugin-html/test/rollup-plugin-html.test.ts
index dfb0c2784..7ccd949b0 100644
--- a/packages/rollup-plugin-html/test/rollup-plugin-html.test.ts
+++ b/packages/rollup-plugin-html/test/rollup-plugin-html.test.ts
@@ -626,16 +626,7 @@ describe('rollup-plugin-html', () => {
return false;
});
plugin!.api.addHtmlTransformer((html: string) =>
- html.replace('
hello world
' +
- '' +
'' +
'' +
- '', ''),
- );
- plugin!.api.addHtmlTransformer(
- (html: string) =>
- html.replace('', ''),
- 'output',
- );
- plugin!.api.addHtmlTransformer(
- (html: string) => html.replace('', ''),
- 'input',
+ html.replace('', ''),
);
},
} as Plugin,
@@ -650,10 +641,9 @@ describe('rollup-plugin-html', () => {
expect(entryB).to.include("console.log('entrypoint-b.js');");
expect(stripNewlines(getAsset(output, 'index.html').source)).to.equal(
'