Skip to content

Commit

Permalink
feat: ask load hooks for index.html before reading from filesystem
Browse files Browse the repository at this point in the history
  • Loading branch information
aleclarson committed Jul 25, 2021
1 parent c32c5ac commit fdf889d
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions packages/vite/src/node/server/middlewares/indexHtml.ts
Expand Up @@ -13,7 +13,7 @@ import {
import { ResolvedConfig, ViteDevServer } from '../..'
import { send } from '../send'
import { CLIENT_PUBLIC_PATH, FS_PREFIX } from '../../constants'
import { cleanUrl, fsPathFromId } from '../../utils'
import { cleanUrl, fsPathFromId, normalizePath } from '../../utils'
import { assetAttrsConfig } from '../../plugins/html'

export function createDevHtmlTransformFn(
Expand All @@ -35,7 +35,7 @@ function getHtmlFilename(url: string, server: ViteDevServer) {
if (url.startsWith(FS_PREFIX)) {
return fsPathFromId(url)
} else {
return path.join(server.config.root, url.slice(1))
return normalizePath(path.join(server.config.root, url.slice(1)))
}
}

Expand Down Expand Up @@ -155,14 +155,18 @@ export function indexHtmlMiddleware(
// spa-fallback always redirects to /index.html
if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') {
const filename = getHtmlFilename(url, server)
if (fs.existsSync(filename)) {
try {
let html = fs.readFileSync(filename, 'utf-8')
html = await server.transformIndexHtml(url, html, req.originalUrl)
return send(req, res, html, 'html')
} catch (e) {
return next(e)
}
try {
const loadResult = await server.pluginContainer.load(filename)
const html = await server.transformIndexHtml(
url,
(loadResult &&
(typeof loadResult === 'string' ? loadResult : loadResult.code)) ||
fs.readFileSync(filename, 'utf-8'),
req.originalUrl
)
return send(req, res, html, 'html')
} catch (e) {
return next(e)
}
}
next()
Expand Down

0 comments on commit fdf889d

Please sign in to comment.