diff --git a/.changeset/mean-spoons-tie.md b/.changeset/mean-spoons-tie.md new file mode 100644 index 0000000000000..22d10d41fe505 --- /dev/null +++ b/.changeset/mean-spoons-tie.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Pass `compressHTML` setting to server adapters diff --git a/packages/astro/src/core/app/index.ts b/packages/astro/src/core/app/index.ts index ae0c3fb00e784..54fdc56c26cce 100644 --- a/packages/astro/src/core/app/index.ts +++ b/packages/astro/src/core/app/index.ts @@ -204,6 +204,7 @@ export class App { const url = new URL(request.url); const pathname = prependForwardSlash(this.removeBase(url.pathname)); const info = this.#routeDataToRouteInfo.get(routeData!)!; + const isCompressHTML = this.#manifest.compressHTML ?? false; // may be used in the future for handling rel=modulepreload, rel=icon, rel=manifest etc. const links = new Set(); const styles = createStylesheetElementSet(info.styles); @@ -252,7 +253,7 @@ export class App { page.onRequest as MiddlewareResponseHandler, apiContext, () => { - return renderPage({ mod, renderContext, env: this.#env, cookies: apiContext.cookies }); + return renderPage({ mod, renderContext, env: this.#env, cookies: apiContext.cookies, isCompressHTML }); } ); } else { @@ -261,6 +262,7 @@ export class App { renderContext, env: this.#env, cookies: apiContext.cookies, + isCompressHTML }); } Reflect.set(request, responseSentSymbol, true); diff --git a/packages/astro/src/core/app/types.ts b/packages/astro/src/core/app/types.ts index 9af15bf502527..927da06d9771a 100644 --- a/packages/astro/src/core/app/types.ts +++ b/packages/astro/src/core/app/types.ts @@ -38,6 +38,7 @@ export type SSRManifest = { routes: RouteInfo[]; site?: string; base?: string; + compressHTML?: boolean; assetsPrefix?: string; markdown: MarkdownRenderingOptions; renderers: SSRLoadedRenderer[]; diff --git a/packages/astro/src/core/build/plugins/plugin-ssr.ts b/packages/astro/src/core/build/plugins/plugin-ssr.ts index ebda7fb3e650b..254037e595091 100644 --- a/packages/astro/src/core/build/plugins/plugin-ssr.ts +++ b/packages/astro/src/core/build/plugins/plugin-ssr.ts @@ -482,6 +482,7 @@ function buildManifest( routes, site: settings.config.site, base: settings.config.base, + compressHTML: settings.config.compressHTML, assetsPrefix: settings.config.build.assetsPrefix, markdown: settings.config.markdown, componentMetadata: Array.from(internals.componentMetadata), diff --git a/packages/astro/test/ssr-manifest.test.js b/packages/astro/test/ssr-manifest.test.js index cb876bde9889b..4e5521220903b 100644 --- a/packages/astro/test/ssr-manifest.test.js +++ b/packages/astro/test/ssr-manifest.test.js @@ -11,6 +11,7 @@ describe('astro:ssr-manifest', () => { fixture = await loadFixture({ root: './fixtures/ssr-manifest/', output: 'server', + compressHTML: true, adapter: testAdapter(), }); await fixture.build(); @@ -25,4 +26,10 @@ describe('astro:ssr-manifest', () => { const $ = cheerio.load(html); expect($('#assets').text()).to.equal('["/_astro/index.a8a337e4.css"]'); }); + + it('includes compressHTML', async () => { + const app = await fixture.loadTestAdapterApp(); + expect(app.manifest).to.haveOwnProperty('compressHTML'); + expect(app.manifest.compressHTML).to.be.true; + }); });