Skip to content

Commit

Permalink
feat: support for serving index.html in middleware mode
Browse files Browse the repository at this point in the history
  • Loading branch information
meowtec committed May 3, 2021
1 parent f399298 commit 03f9e09
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 8 deletions.
5 changes: 4 additions & 1 deletion docs/guide/ssr.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,11 @@ async function createServer() {

// Create vite server in middleware mode. This disables Vite's own HTML
// serving logic and let the parent server take control.
//
// If you want to use Vite's own HTML serving logic (using Vite as
// a development middleware), using 'html' instead.
const vite = await createViteServer({
server: { middlewareMode: true }
server: { middlewareMode: 'ssr' }
})
// use vite's connect instance as middleware
app.use(vite.middlewares)
Expand Down
2 changes: 1 addition & 1 deletion packages/playground/ssr-react/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ async function createServer(
root,
logLevel: isTest ? 'error' : 'info',
server: {
middlewareMode: true,
middlewareMode: 'ssr',
watch: {
// During tests we edit the files too fast and sometimes chokidar
// misses change events, so enforce polling for consistency
Expand Down
2 changes: 1 addition & 1 deletion packages/playground/ssr-vue/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ async function createServer(
root,
logLevel: isTest ? 'error' : 'info',
server: {
middlewareMode: true,
middlewareMode: 'ssr',
watch: {
// During tests we edit the files too fast and sometimes chokidar
// misses change events, so enforce polling for consistency
Expand Down
13 changes: 8 additions & 5 deletions packages/vite/src/node/server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ export interface ServerOptions {
/**
* Create Vite dev server to be used as a middleware in an existing server
*/
middlewareMode?: boolean
middlewareMode?: boolean | 'html' | 'ssr'
/**
* Prepend this folder to http requests, for use when proxying vite as a subfolder
* Should start and end with the `/` character
Expand Down Expand Up @@ -263,7 +263,10 @@ export async function createServer(
const config = await resolveConfig(inlineConfig, 'serve', 'development')
const root = config.root
const serverConfig = config.server || {}
const middlewareMode = !!serverConfig.middlewareMode
let { middlewareMode } = serverConfig
if (middlewareMode === true) {
middlewareMode = 'ssr'
}

const middlewares = connect() as Connect.Server
const httpServer = middlewareMode
Expand Down Expand Up @@ -442,7 +445,7 @@ export async function createServer(
middlewares.use(serveStaticMiddleware(root, config))

// spa fallback
if (!middlewareMode) {
if (!middlewareMode || middlewareMode === 'html') {
middlewares.use(
history({
logger: createDebugger('vite:spa-fallback'),
Expand All @@ -469,7 +472,7 @@ export async function createServer(
// serve custom content instead of index.html.
postHooks.forEach((fn) => fn && fn())

if (!middlewareMode) {
if (!middlewareMode || middlewareMode === 'html') {
// transform index.html
middlewares.use(indexHtmlMiddleware(server))
// handle 404s
Expand All @@ -480,7 +483,7 @@ export async function createServer(
}

// error handler
middlewares.use(errorMiddleware(server, middlewareMode))
middlewares.use(errorMiddleware(server, !!middlewareMode))

const runOptimize = async () => {
if (config.cacheDir) {
Expand Down

0 comments on commit 03f9e09

Please sign in to comment.