Skip to content

Commit f7d85ae

Browse files
committed
fix: respect cors and proxy options in preview command
close #2279
1 parent 2cdb3f6 commit f7d85ae

File tree

4 files changed

+24
-12
lines changed

4 files changed

+24
-12
lines changed

packages/vite/src/node/cli.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { BuildOptions } from './build'
44
import { ServerOptions } from './server'
55
import { createLogger, LogLevel } from './logger'
66
import { resolveConfig } from '.'
7-
import { serve } from './serve'
7+
import { preview } from './preview'
88

99
const cli = cac('vite')
1010

@@ -206,7 +206,7 @@ cli
206206
'serve',
207207
'development'
208208
)
209-
await serve(config, options.port)
209+
await preview(config, options.port)
210210
} catch (e) {
211211
createLogger(options.logLevel).error(
212212
chalk.red(`error when starting preview server:\n${e.stack}`)

packages/vite/src/node/serve.ts renamed to packages/vite/src/node/preview.ts

+16-4
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,23 @@ import { ResolvedConfig } from '.'
88
import { Connect } from 'types/connect'
99
import { resolveHttpServer } from './server/http'
1010
import { openBrowser } from './server/openBrowser'
11+
import corsMiddleware from 'cors'
12+
import { proxyMiddleware } from './server/middlewares/proxy'
1113

12-
export async function serve(config: ResolvedConfig, port = 5000) {
14+
export async function preview(config: ResolvedConfig, port = 5000) {
1315
const app = connect() as Connect.Server
16+
const httpServer = await resolveHttpServer(config.server, app)
17+
18+
// cors
19+
const { cors } = config.server
20+
if (cors !== false) {
21+
app.use(corsMiddleware(typeof cors === 'boolean' ? {} : cors))
22+
}
23+
24+
// proxy
25+
if (config.server.proxy) {
26+
app.use(proxyMiddleware(httpServer, config))
27+
}
1428

1529
app.use(compression())
1630

@@ -23,15 +37,13 @@ export async function serve(config: ResolvedConfig, port = 5000) {
2337
})
2438
)
2539

26-
const server = await resolveHttpServer(config.server, app)
27-
2840
const options = config.server || {}
2941
const hostname = options.host || 'localhost'
3042
const protocol = options.https ? 'https' : 'http'
3143
const logger = config.logger
3244
const base = config.base
3345

34-
server.listen(port, () => {
46+
httpServer.listen(port, () => {
3547
logger.info(
3648
chalk.cyan(`\n vite v${require('vite/package.json').version}`) +
3749
chalk.green(` build preview server running at:\n`)

packages/vite/src/node/server/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ export async function createServer(
403403
// proxy
404404
const { proxy } = serverConfig
405405
if (proxy) {
406-
middlewares.use(proxyMiddleware(server))
406+
middlewares.use(proxyMiddleware(httpServer, config))
407407
}
408408

409409
// base

packages/vite/src/node/server/middlewares/proxy.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import * as http from 'http'
22
import { createDebugger } from '../../utils'
33
import httpProxy from 'http-proxy'
44
import { HMR_HEADER } from '../ws'
5-
import { ViteDevServer } from '..'
65
import { Connect } from 'types/connect'
76
import { HttpProxy } from 'types/http-proxy'
87
import chalk from 'chalk'
8+
import { ResolvedConfig } from '../..'
99

1010
const debug = createDebugger('vite:proxy')
1111

@@ -28,10 +28,10 @@ export interface ProxyOptions extends HttpProxy.ServerOptions {
2828
) => void | null | undefined | false | string
2929
}
3030

31-
export function proxyMiddleware({
32-
httpServer,
33-
config
34-
}: ViteDevServer): Connect.NextHandleFunction {
31+
export function proxyMiddleware(
32+
httpServer: http.Server | null,
33+
config: ResolvedConfig
34+
): Connect.NextHandleFunction {
3535
const options = config.server.proxy!
3636

3737
// lazy require only when proxy is used

0 commit comments

Comments
 (0)