Skip to content

Commit dc1195e

Browse files
committed
feat(preview): allow setting compression options
1 parent 86d2e8b commit dc1195e

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

docs/config/preview-options.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,10 @@ See [`server.cors`](./server-options#server-cors) for more details.
9696
- **Type:** `OutgoingHttpHeaders`
9797

9898
Specify server response headers.
99+
100+
## preview.compression
101+
102+
- **Type:** `CompressionOptions`
103+
- Default: `{ threshold: 1024, level: -1, brotli: false, gzip: true, mimes: /text|javascript|\/json|xml/i }`
104+
105+
Configure compression for files served by the preview server. See [`@polka/compression`](https://www.npmjs.com/package/@polka/compression#options) for more details.

packages/vite/src/node/preview.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import fs from 'node:fs'
22
import path from 'node:path'
33
import sirv from 'sirv'
4-
import compression from '@polka/compression'
4+
import compression, {
5+
type Options as CompressionOptions,
6+
} from '@polka/compression'
57
import connect from 'connect'
68
import type { Connect } from 'dep-types/connect'
79
import corsMiddleware from 'cors'
@@ -46,10 +48,17 @@ import {
4648
} from './server/pluginContainer'
4749
import type { MinimalPluginContextWithoutEnvironment } from './plugin'
4850

49-
export interface PreviewOptions extends CommonServerOptions {}
51+
export { type Options as CompressionOptions } from '@polka/compression'
52+
53+
export interface PreviewOptions extends CommonServerOptions {
54+
compression?: CompressionOptions
55+
}
5056

5157
export interface ResolvedPreviewOptions
52-
extends RequiredExceptFor<PreviewOptions, 'host' | 'https' | 'proxy'> {}
58+
extends RequiredExceptFor<
59+
PreviewOptions,
60+
'host' | 'https' | 'proxy' | 'compression'
61+
> {}
5362

5463
export function resolvePreviewOptions(
5564
preview: PreviewOptions | undefined,
@@ -68,6 +77,7 @@ export function resolvePreviewOptions(
6877
proxy: preview?.proxy ?? server.proxy,
6978
cors: preview?.cors ?? server.cors,
7079
headers: preview?.headers ?? server.headers,
80+
compression: preview?.compression,
7181
}
7282
}
7383

@@ -224,7 +234,7 @@ export async function preview(
224234
app.use(proxyMiddleware(httpServer, proxy, config))
225235
}
226236

227-
app.use(compression())
237+
app.use(compression(config.preview.compression))
228238

229239
// base
230240
if (config.base !== '/') {

0 commit comments

Comments
 (0)