diff --git a/packages/playground/html/__tests__/html.spec.ts b/packages/playground/html/__tests__/html.spec.ts index e5d81734411a99..232e7b7b8fe68d 100644 --- a/packages/playground/html/__tests__/html.spec.ts +++ b/packages/playground/html/__tests__/html.spec.ts @@ -63,6 +63,12 @@ function testPage(isNested: boolean) { describe('main', () => { testPage(false) + + test('preserve comments', async () => { + const html = await page.innerHTML('body') + expect(html).toMatch(``) + expect(html).toMatch(``) + }) }) describe('nested', () => { diff --git a/packages/playground/html/index.html b/packages/playground/html/index.html index 8b13222e3ca2f9..b947033587e2d0 100644 --- a/packages/playground/html/index.html +++ b/packages/playground/html/index.html @@ -1,5 +1,7 @@ +

Hello

+ \ No newline at end of file diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts index cbcb95eca2406d..d0d1d3c43f4923 100644 --- a/packages/vite/src/node/server/middlewares/indexHtml.ts +++ b/packages/vite/src/node/server/middlewares/indexHtml.ts @@ -15,8 +15,13 @@ import { CLIENT_PUBLIC_PATH, FS_PREFIX } from '../../constants' const devHtmlHook: IndexHtmlTransformHook = (html, { path }) => { let index = -1 + const comments: string[] = [] + html = html - .replace(htmlCommentRE, '') + .replace(htmlCommentRE, (m) => { + comments.push(m) + return `` + }) .replace(scriptRE, (_match, _openTag, script) => { index++ if (script) { @@ -25,6 +30,7 @@ const devHtmlHook: IndexHtmlTransformHook = (html, { path }) => { } return _match }) + .replace(//g, (_, i) => comments[i]) return { html,